ServerValidateEventArgs和ASP.NET中的自定义验证控件

时间:2019-02-26 05:24:46

标签: asp.net

我是ASP.NET的初学者,只是自定义验证的一个问题,我们知道它可以这样工作:

protected void customValidation_ServerValidate(Object source, ServerValidateEventArgs e)
{
   if(e.Value...)
   {
    ...
   } else
   {
      e.IsValid = false;
   }
} //customValidation is the id of the custom validation control

但是e.isValid的值如何转移到验证的IsValid属性?为什么我们必须使用ServerValidateEventArgs而不是像这样编码?

...
} else
{
    customValidation.IsValid = false;
}

这种方法不是更明智吗?将验证控件的isValid设置为false?为什么通过ServerValidateEventArgs实例?

1 个答案:

答案 0 :(得分:1)

假设您有几个使用相同自定义验证的控件。您只想指出那些无效的控件。这就是ServerValidateEventArgs进入的地方。

这将用于指示页面上哪些控件未通过验证。

E.G。

ASPX

<asp:TextBox runat="server" ID="txtCustomDate" />
<asp:CustomValidator runat="server" OnServerValidate="cstvDate_ServerValidate" 
     ControlToValidate="txtCustomDate" ID="ctValDate1" ></asp:CustomValidator>
<asp:TextBox runat="server" ID="txtCustomDate2" />
<!-- Same Logic for validation -->
<asp:CustomValidator runat="server" OnServerValidate="cstvDate_ServerValidate" 
      ControlToValidate="txtCustomDate2" ID="ctValDate2" ></asp:CustomValidator>

背后的代码

protected void customValidation_ServerValidate(Object source, ServerValidateEventArgs e)
{
   if(e.Value...)
   {
    ...
   } else
   {
      e.IsValid = false;
   }
}

验证方法由OnServerValidate属性标识。验证控件通过source参数传递有关自身的信息,并通过e参数传递验证事件。

有关更多信息,请参见: