ファーストネーム、ラストネーム、アドレスなどのユーザー入力を受け取る同じフォームコントロールを持つ複数の aspx ページがあります。
これらのフィールドには、すでに必須、正規表現、および長さベースのクライアント側の検証が含まれています。次に、一般的な検証を実行するカスタム バリデーターをこれらのページに追加する必要があります。しかし、数百のページがあるため、すべてのページを編集するつもりはありません。私は、aspx ページにカスタム検証タグを追加することと、aspx ページのカスタム検証タグに割り当てることができる一般的なサーバー側検証関数を検討しているだけで、労力を節約できます。
これらのページは非常に古いため、フォームをユーザー コントロールに変更できません。また、各ページのCSSが異なるためです。
複数の aspx ページからアクセスできる共通のサーバー側バリデーター関数を作成することは可能ですか?
このように 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)
{
}
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加