回发后如何重置asp.net表单?

回发后如何重置asp.net表单?,asp.net,forms,Asp.net,Forms,在btnCreate\u OnClick事件之后,我试图将表单重置为默认值,就像加载第一页一样。问题是回发后,每个文本框和其他控件都会重新加载ViewState值。由于DropDownList选择上的服务器事件,我无法停用viewstate。到目前为止,我找到的唯一方法是在单击事件后重定向到self,但这会加载页面两次,因此是一个糟糕的解决方案。我已尝试ViewState.Clear()并更新UpdatePanel,但未成功 我可以对所有控件进行循环并设置txtXXXXX.Text==“”,但我

在btnCreate\u OnClick事件之后,我试图将表单重置为默认值,就像加载第一页一样。问题是回发后,每个文本框和其他控件都会重新加载ViewState值。由于DropDownList选择上的服务器事件,我无法停用viewstate。到目前为止,我找到的唯一方法是在单击事件后重定向到self,但这会加载页面两次,因此是一个糟糕的解决方案。我已尝试ViewState.Clear()并更新UpdatePanel,但未成功

我可以对所有控件进行循环并设置txtXXXXX.Text==“”,但我很确定这不是最好的主意

类似Page.Reset()的东西本来是完美的,但它并不存在

对我的这个问题有什么想法吗


谢谢

一种不一定理想的方法是使用Javascript将值重置为默认值。如果它是一个大的表单,那么它可能很难看,但是会阻止进行自我重定向的需要


您也可以尝试Server.Transfer而不是Response.Redirect(/self/)

如果可行,我通常只使用Response.Redirect从头开始重新加载同一页面


对页面的初始GET请求通常比后续帖子的成本要低,因此没有太多理由避免它。

由于viewstate的原因,自重定向变得很棘手

按钮有一个html输入类型“reset”,但我不确定msft为此在viewstate/asp.net中添加了什么或任何集成。它通常适用于简单的javascript表单

例:


在我们的例子中,最好的性能解决方案是为每个控件手动设置单击事件中的默认值,例如:

textbox1.Text = null;
textbox2.Text = null;
这避免了双重页面加载和循环。我们不必更新UpdatePanel,因为它在渲染之前执行

也许在更复杂的web应用程序中,我们必须重定向,因为大多数人似乎都接受这一解决方案

将每个控件设置为默认值更适合我们的情况


谢谢

我们只需两行代码就可以重置ASP.NET表单页面

protected void Button_Reset_Click(object sender, EventArgs e)
{
     Session["ViewState"] = null;
     Response.Redirect("/Roster/DRAC/Create.aspx");
}

我不知道这是否有帮助,但我在提交表单之前更改了表单上每个输入的名称,我想在表单上使用javascript获取新值,因为.net页面无法再将表单中的值与页面的控件相匹配,它会像没有回发一样重新加载这些值。我还向表单添加了一个新值,这样我就知道哪个按钮提交了表单,并使用该逻辑来决定加载到所有控件中的内容以及如何处理表单数据

$("#Bset").children().click(function() { //all the btns click function
    $.each($("form").find("input"), function(e,v) { //could filter this to subset of inputs
        $(v).attr("name", "_" + $(v).attr("name")); // ctrl1 becomes _cntrl1
    });
    $("form").append("<input type='hidden' id='b' name='b' value='" + $(this).text() + "' />").submit();
});
然后,我可以在dopostback中处理表单数据、与db交互等操作。这些操作可能会更改mrl加载的值,并刷新与mrl关联的输入中的数据,而不管它们是否在表单上被修改

另一种选择是绑定一些按钮,使用Web服务处理db交互,然后调用window.location刷新页面

$.ajax({
url:“webservice/dbfunction?”
数据:{哪个btn按下,一些表单值等。}
成功:函数(){window.location(“samepage.aspx?id=xxx”);}

});


这还可以避免在服务器端进行响应重定向

btnCreate_OnClick事件中除了重置表单外是否有代码?否,我也从DB执行StoredProc。这仅在有问题的记录通过重定向到页面加载的情况下有效;因此,这不能总是使用!我只是想说我一直在寻找一个像这样的简单解决方案有一段时间了。谢谢你,拉詹!如果你不硬编码页面名称会更好。
protected void Page_Init(object sender, EventArgs e)
{
    id = int.Parse(Request.QueryString["id"]);
    bk = db.dc.getDetailBK(id).Single();
    if (Request.Form.Count > 0)
        doPostBack();
    mrl = (from a in db.dc.getMetricQTD(id, null, null, loadSavedGoals) select a).ToList();
}