[英]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.