2017-07-06 39 views
0

我有多個aspx頁面,它們具有相同的表單控件,並且使用像firstname,lastname,address這樣的用戶輸入。多個aspx頁面的常見自定義服務器端驗證功能

這些字段已經有要求,基於正則表達式和長度的客戶端驗證。現在我需要做的是添加一個自定義驗證器到這些頁面,這將執行一個通用的驗證。但我不想編輯所有頁面,因爲它們是數百頁。我只是在向aspx頁面添加一個自定義驗證標籤,並且可以將一個通用服務器端驗證功能添加到aspx頁面上的自定義驗證器標籤,這將節省我的工作量。

這些頁面非常舊,所以我無法將窗體更改爲用戶控件。也因爲每個頁面都有不同的CSS。

是否可以編寫一個可以通過多個aspx頁面訪問的通用服務器端驗證器函數?

回答

0

您可以通過擴展的CustomValidator類這樣

namespace CustomValidation 
{ 
    public class MyValidator : CustomValidator 
    { 
     protected override bool OnServerValidate(string value) 
     { 
      bool baseresult = base.OnServerValidate(value); 
      if (baseresult && value == "TestValue") 
       return true; 

      return false; 
     } 

     protected override void AddAttributesToRender(HtmlTextWriter writer) 
     { 
      base.AddAttributesToRender(writer); 
     } 

     protected override bool ControlPropertiesValid() 
     { 
      return base.ControlPropertiesValid(); 
     } 

     protected override bool EvaluateIsValid() 
     { 
      return base.EvaluateIsValid(); 
     } 
    } 
} 

而在你的aspx頁面創建自己的驗證剛纔添加的控制 -

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> 
<%@ Register TagPrefix="mytag" Namespace="CustomValidation" Assembly="WebApplication1"%> 
<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <mytag:MyValidator ErrorMessage="Testing" ControlToValidate="txtBox" runat="server" /> 
      <asp:TextBox runat="server" ID="txtBox"></asp:TextBox> 
      <asp:Button Text="Test Button" runat="server" ID="btnTest" OnClick="btnTest_Click" /> 
     </div> 
    </form> 
</body> 
</html> 

而且你OnServerValidate將在頁面調用。 IsValid

namespace WebApplication1 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void btnTest_Click(object sender, EventArgs e) 
     { 
      if (Page.IsValid) 
      { 

      } 
     } 
    } 
} 
+0

謝謝!是的,這是我需要做的。 – swap000

+0

很高興知道。 –