【问题标题】:Common custom server side validation function for multiple aspx pages多个aspx页面的通用自定义服务器端验证功能
【发布时间】:2017-12-10 15:47:53
【问题描述】:

我有多个 aspx 页面,它们具有相同的表单控件,可以接受用户输入,例如名字、姓氏、地址。

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

这些页面非常旧,因此我无法将表单更改为用户控件。也因为每个页面都有不同的css。

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

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您可以通过像这样扩展 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 将在 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)
                {
    
                }
            }
        }
    }
    

    【讨论】:

    • 谢谢!是的,这就是我需要做的。
    • 很高兴知道这一点。
    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多