繁体   English   中英

我是否必须在代码隐藏文件中调用Validate()?

[英]Do I have to call Validate() in a code-behind file?

我的代码隐藏文件中有以下事件处理程序,只要将HTML表单提交到服务器,该事件处理程序就会触发:

public void Validate_Form(object sender, EventArgs e)
{
    // Check that the page is loaded due to a postback:
    if (IsPostBack)
    {
        // Check that the page passed validation:
        if (IsValid)
        {
           // perform some logic...
        }
     }
}

我的问题是我是否需要在if (IsValid)指令之前显式调用Validate()方法? 以下内容之间有什么区别:

if (IsValid)                      Validate();
{                                 if (IsValid)
    ...              vs.          {
}                                     ...
                                  }

而且由于我没有看到任何错误/警告,是否表示上面两个是相同的? 谢谢!

它们不是相同的输出,因此请通过示例进行解释。 (您应关闭JavaScript进行测试)

假设您有一个如下页面:

<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox runat="server" ID="txtTest1"></asp:TextBox>
            <asp:RequiredFieldValidator ValidationGroup="ValidationGroup1" runat="server" ControlToValidate="txtTest1"></asp:RequiredFieldValidator>
            <asp:Button runat="server" ValidationGroup="ValidationGroup1"  ID="btnValidate1" Text="Validate1" OnClick="Validate_Form" />

            <asp:TextBox runat="server" ID="txtTest2"></asp:TextBox>
            <asp:RequiredFieldValidator ValidationGroup="ValidationGroup2"  runat="server" ControlToValidate="txtTest2"></asp:RequiredFieldValidator>
            <asp:Button runat="server" ValidationGroup="ValidationGroup2"  ID="btnValidate2"  Text="Validate2" OnClick="Validate_Form" />
        </div>
    </form>
</body>

如果我们使用第一种方法:

public void Validate_Form(object sender, EventArgs e)
    {
        // Check that the page is loaded due to a postback:
        if (IsPostBack)
        {
            // Check that the page passed validation:
            if (IsValid)
            {
                // perform some logic...
            }
        }
    }

验证按钮正常工作。

但是,如果我们使用第二种方法:

public void Validate_Form(object sender, EventArgs e)
    {
        Validate();
        // Check that the page is loaded due to a postback:
        if (IsPostBack)
        {
            // Check that the page passed validation:
            if (IsValid)
            {
                // perform some logic...
            }
        }
    }

然后,如果填写txtTest1并单击btnValidate1 IsValid返回false! 因为Validate()检查所有验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM