1
유효성 검사에 익숙하지 않고 유효성 검사를 위해 간단한 웹 폼을 작성했습니다. 여기서는 BaseValidator
클래스의 AppCode 폴더에서 EvaluateIsValid()
메서드를 재정의합니다. 이 메서드에서는 오류 개체가 개체의 인스턴스에this.GetControlValidationValue()
호출시 문자열을 설정하려면 설정되어 있지 않습니다.사용자 지정 유효성 검사 개체가 인스턴스로 설정되지 않았습니다.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ValidApp.Default" %>
<!DOCTYPE html>
<script runat="server">
protected void pageCvd_ServerValidate(object source, ServerValidateEventArgs args)
{
ValidApp.App_Code._Validators valid = new ValidApp.App_Code._Validators(usernameTxt.ClientID.ToString());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="display:inline-block; width:200px;">
<asp:CustomValidator ID="pageValidatorCvd" runat="server" EnableClientScript="false" OnServerValidate="pageCvd_ServerValidate"></asp:CustomValidator>
<asp:Label ID="usernameLbl" runat="server" Text="Username:" style="width:50px; font-size:xx-small"></asp:Label>
<asp:TextBox ID="usernameTxt" runat="server" style="width:100px; font-size:xx-small"></asp:TextBox>
<br />
<asp:Label ID="passwordLbl" runat="server" Text="Password:" style="width:50px; font-size:xx-small"></asp:Label>
<asp:TextBox ID="passwordTxt" runat="server" style="width:100px; font-size:xx-small"></asp:TextBox>
</div>
<div>
<asp:Button ID="registryBtn" runat="server" OnCommand="registryBtn_Command" CommandName="" CommandArgument="" Text="Register" style="width:50px; font-size:xx-small"/>
</div>
</form>
</body>
</html>
코드
namespace ValidApp.App_Code { public class _Validators : BaseValidator { private string regex; private string errorMessage; private string controlToValidate; protected override bool EvaluateIsValid() { string value = this.GetControlValidationValue(controlToValidate); return Regex.IsMatch(value, regex); } public _Validators(string controlToValidate = "", string regex = @"^[a-z0-9]{6-8}$", string errorMessage = "The Username is not valid!") { this.regex = regex; this.errorMessage = errorMessage; this.controlToValidate = controlToValidate; bool validation = EvaluateIsValid(); } } }
뒤에 나는
<%@ Register >
에 있지만 아무 소용이 내 자신의 사용자 정의 유효성 검사를 만들기 위해 노력했다.
내가 잘못 가고있는 아이디어가 있습니까?
'controlToValidate'가 적절한 값으로 설정되어 있는지 디버깅 해 봤습니까? 나는 당신의 생성자에 null이 어떻게 든 넘겨지고 있다고 의심한다. webcontrols가 매개 변수화 된 생성자를 가질 수 있다고 생각하지 않습니다. – CodingGorilla
예, 올바른 컨트롤을 보냅니다. 그것은 얻지 못하는 커스텀 밸리데이터 컨트롤입니다! – DaNet