asp.net中的服务器端验证?

时间:2010-09-07 05:28:55

标签: asp.net

大家好我知道asp.net提供服务器端验证控件,它有自己的内置逻辑,所以我想在这里问我们可以扩展内置逻辑,我的意思是假设我们使用比较验证器比较两个文件,此时它将根据内置逻辑进行验证,但我想为比较验证器添加一些代码,这是可能的。

根据我在asp.net中的知识,每个控件都被视为具有数据和代码的类,因此根据继承或扩展,我们可以在验证控件中添加一些代码吗?

4 个答案:

答案 0 :(得分:4)

看起来你需要使用 CustomValidator

您可以使用自定义函数来定义控件何时通过验证。在这种情况下可能是这样的。

void ServerValidation (object source, ServerValidateEventArgs args)
{
    args.IsValid = //Define your validation here
}

答案 1 :(得分:2)

CustomValidator是一个选项。如果您希望实现类似于现有验证器的验证器,您可以简单地从它派生并覆盖所有必要的方法。但您应该寻找的最重要的方法是 EvaluateIsValid

当您的逻辑更可能是唯一的时,CustomValidator会更好。如果你想在多个地方使用逻辑,我建议使用继承。它允许您根据需要将逻辑封装在类库中,而CustomValidator则不会。

答案 2 :(得分:1)

在你的标记中:

<asp:TextBox id="Text1" runat="server" />

<asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Names="verdana" 
           Font-Size="10pt"
           OnServerValidate="ServerValidation"
           runat="server"/>

<asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>

在服务器端代码中:

void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 
         // Display whether the page passed validation.
         if (Page.IsValid) 
         {
            Message.Text = "Page is valid.";
         }

         else 
         {
            Message.Text = "Page is not valid!";
         }
      }

      void ServerValidation(object source, ServerValidateEventArgs args)
      {
         try 
         {
            // Test whether the value entered into the text box is even.
            int i = int.Parse(args.Value);
            args.IsValid = ((i%2) == 0);
         }

         catch(Exception ex)
         {
            args.IsValid = false;
         }
      }

此示例是CustomValidator文档页面上的缩写版本:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.aspx

答案 3 :(得分:0)

是的,你可以。像卡洛斯的回答链接会告诉你。您可以将代码放在代码后面。(。cs文件)