我必须在代码隐藏文件中调用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. {
} ...
}
既然我没有看到任何错误/警告,这是否意味着上面两个是相同的?谢谢!
它们不是相同的输出。用一个例子来解释。(你应该关闭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()
检查所有的验证