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

本文关键字:Validate 调用 代码 隐藏文件 | 更新日期: 2023-09-27 18:05:36

在我的代码隐藏文件中有以下事件处理程序,每当向服务器提交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...
        }
     }
}

我的问题是我需要显式调用Validate()方法之前我的if (IsValid)指令?

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

既然我没有看到任何错误/警告,这是否意味着上面两个是相同的?谢谢!

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

它们不是相同的输出。用一个例子来解释。(你应该关闭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()检查所有的验证