繁体   English   中英

在asp.net服务器端验证?

[英]server side validation in asp.net?

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

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

看来您需要使用CustomValidator

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

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

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

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

在您的标记中:

<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/zh-CN/library/system.web.ui.webcontrols.customvalidator.aspx

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM