多个aspx页面的通用自定义服务器端验证功能

时间:2017-07-06 14:48:01

标签: c# asp.net

我有多个aspx页面,它们具有相同的表单控件,用户输入如firstname,lastname,address。

这些字段已经具有必需的,正则表达式和基于长度的客户端验证。现在我需要做的是为这些页面添加一个自定义验证器,它将执行常见的验证。但我不想编辑所有页面,因为它们有数百个。我只想在aspx页面上添加一个自定义验证标签和一个公共服务器端验证函数,它可以分配给aspx页面上的自定义验证器标签,这将节省我的工作。

这些页面很旧,所以我无法将表单更改为用户控件。另外因为每个页面都有不同的CSS。

是否可以编写一个可由多个aspx页面访问的公共服务器端验证器函数?

1 个答案:

答案 0 :(得分:0)

您可以通过像这样

扩展CustomValidator类来创建自己的Validator
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将在Page.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)
            {

            }
        }
    }
}