【问题标题】:Clear all fields in ASP.net form清除 ASP.net 表单中的所有字段
【发布时间】:2010-09-25 14:10:31
【问题描述】:

有没有一种简单的方法可以重置表单中的所有字段?

我的 asp.net 表单中有大约 100 个控件,并且有提交和重置按钮。

当用户点击重置按钮时,如何使字段中的所有值都为空?

我有很多下拉框、文本框、复选框。

【问题讨论】:

  • @Claudio,OP 正在询问如何在 ASP.NET 应用程序中重置表单的所有字段。没有提到关于 jQuery 并且投票关闭这个答案,因为对我来说完全重复似乎是错误的。
  • @Darin Dimitrov:也许你是对的。假设每个人都在使用/愿意使用 jquery(即使是现在)可能太自命不凡了。抱歉,到目前为止,我无法恢复我的投票。顺便说一句:我仍然认为输入类型重置可能会导致混乱。

标签: asp.net


【解决方案1】:

将此添加到取消按钮的服务器端处理程序:

Response.Redirect("~/mypage.aspx", false);

【讨论】:

  • 这会丢失所有视图状态数据,这可能是不可取的。
  • 如果我们清除所有字段,我们显然不需要首先保留 ViewState...我们只是重新加载页面,这是最简单的方法这样做。他指出所有字段都被清除:-)
  • 请问你为什么用第二个参数true调用redirect?您不想使用false 来阻止AbortThreadException 吗? (Relevant link.)
【解决方案2】:

循环浏览页面上的所有控件,如果控件是TextBox类型,则将Text属性设置为String.Empty

protected void ClearTextBoxes(Control p1)
{
    foreach (Control ctrl in p1.Controls)
    {
        if(ctrl is TextBox)
        {
             TextBox t = ctrl as TextBox;

             if(t != null)
             {
                  t.Text = String.Empty;
             }
        }
        else
       {
           if (ctrl.Controls.Count > 0)
           {
               ClearTextBoxes(ctrl);
           }
        }
    }
}

然后像这样在你的点击事件中调用它:

 ClearTextBoxes(Page);

【讨论】:

    【解决方案3】:

    尝试添加:

    <input type="reset" value="Clear" />
    

    到您的表单。

    【讨论】:

    • 到目前为止,我知道这会将表单字段初始化为初始状态。如果 texbox 的初始状态是“HELLO”,它将重置为该值。我不认为这是用户需要的。
    【解决方案4】:

    您可以使用OnClientClick 事件。这将重置表单上存在的所有控件。 OnClientClick="this.form.reset();return false;"

    查看代码:

    <asp:Button ID="Reset_Button" runat="server" Text="Reset" 
        Width="81px" OnClientClick="this.form.reset();return false;" />
    

    【讨论】:

    • 它只在提交表单之前工作。当我提交表单然后如果我点击重置,表单不会被清除。
    • OnClientClick 总是在服务器端代码之前调用,那么在提交 /????? 之前清除表单有什么意义?
    • 这对我有用,但我如何清除一页上的所有表单,我有一个页面有 4 个表单,出于某种奇怪的原因,但我想单击一下就清除所有表单
    【解决方案5】:

    对我来说最好的选择是

    Response.Redirect(Request.RawUrl);
    

    只需将此代码添加到您的 asp.net 控件的取消或重置按钮上。

    【讨论】:

      【解决方案6】:

      如果您使用的是 asp.net formview 对象,只需在重置按钮单击事件中使用 myFormView.DataBind();。

      【讨论】:

        【解决方案7】:

        或者,如果您使用的是 Angular。

        将此添加到cshtml页面上的按钮:

        <input type="button" value="Cancel" id="cancel" ng-click="cancel();" />
        

        这是你的 .js 文件:

        $scope.cancel = function () {
            if (!$('form').dirtyForms('isDirty')) {
                $('form').dirtyForms('setClean');
            }
            else {
                $('form').dirtyForms('isDirty', true);
            }
             var that = this;
            var method = that.getUrl('CONTROLLER', 'ACTION', 'id', 'querystring');
            window.location = method;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-03
          • 1970-01-01
          • 1970-01-01
          • 2017-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多