1
나는 당황 스럽습니다. 누군가 내 유효성 검사 요약에 맞춤 검사기가 표시되지 않는 이유를 지적 할 수 있습니까? 사용자 정의 유효성 검사기의 코드를 단계별로 실행하면 args.IsValid가 false로 설정됩니다. 여기 ValidationSummary에 CustomValidator 오류 메시지가 표시되지 않습니다.
<asp:ValidationSummary ID="ValidationSummary1" runat="server" CssClass="alert alert-danger" DisplayMode="List" ShowSummary="true" ValidationGroup="ValidateUser" />
<fieldset class="form-horizontal">
<legend><asp:Literal runat="server" ID="litFirstName" /> <asp:Literal runat="server" ID="litLastName" /><asp:Literal runat="server" id="litLockedBadge" /></legend> <div class="control-group">
<label class="control-label" for="inputEmail">
<asp:CustomValidator ID="cvEmailAddress" runat="server" ValidationGroup="ValidateUser" Text="*" CssClass="required" ControlToValidate="txtEmailAddress" Display="Dynamic" OnServerValidate="cvValidateEmail" />
<asp:RequiredFieldValidator runat="server" CssClass="required" Display="Dynamic" ControlToValidate="txtEmailAddress" Text="*" ErrorMessage="Email Address Required" ValidationGroup="ValidateUser" /> Email Address</label>
<div class="controls">
<asp:Textbox Text="test" runat="server" id="txtEmailAddress" ClientIDMode="Static" CssClass="span3" />
</div>
</div>
<div class="control-group input-append">
<label class="control-label" for="txtUserName"><asp:CustomValidator runat="server" ID="cvUserName" Text="*" CssClass="required" Display="Dynamic" OnServerValidate="cvValidateUserName" ValidationGroup="ValidateUser" /><asp:RequiredFieldValidator runat="server" Display="Dynamic" CssClass="required" ControlToValidate="txtUserName" Text="*" ErrorMessage="Username Required" ValidationGroup="ValidateUser" /> Username</label>
<div class="controls">
<asp:Textbox Text="test" runat="server" id="txtUserName" ClientIDMode="Static" CssClass="span3" />
<asp:LinkButton data-attr="email" ID="lnkEmailUsername" runat="server" CssClass="btn" OnClick="btn_ClickEmailUsername" ClientIDMode="Static"><i class="icon-envelope"></i></asp:LinkButton>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputEmail"></label>
<div class="controls">
<div class="btn-group">
<asp:Button runat="server" ID="btnUnlockAccount" CssClass="btn" Text="Unlock Account" />
<asp:Button runat="server" ID="btnResetPassword" CssClass="btn" Text="Reset Password" />
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputEmail"></label>
<div class="controls">
<asp:Button runat="server" ID="btnSubmit" CssClass="btn btn-primary" Text="Update User Account" OnClick="btn_UpdateUserAccount" ValidationGroup="ValidateUser" />
</div>
</div>
</fieldset>
가
ValidationSummary
에 표시 할
Validator
의 오류 메시지 위해서는
//Validate the Username
protected void cvValidateUserName(object source, ServerValidateEventArgs args)
{
string userName = txtUserName.Text;
cvUserName.ErrorMessage = "";
args.IsValid = true;
if (userName.Contains(" "))
{
cvUserName.ErrorMessage = "Username cannot contain spaces. ";
cvUserName.IsValid = false;
}
if (userName.Length > 100 || userName.Length < 8)
{
cvUserName.ErrorMessage += "Username must be between 8 and 100 characters. ";
cvUserName.IsValid = false;
return;
}
}
//Validate Email Address
protected void cvValidateEmail(object source, ServerValidateEventArgs args)
{
var emailAddress = txtEmailAddress.Text;
try
{
new MailAddress(emailAddress);
}
catch (Exception)
{
args.IsValid = false;
return;
}
}
당신은 args.IsValid = true를 보내고 있습니다 만, catch 내에서 false로 설정하면됩니다. – Fals
두 지점 모두에서 cvUserName.IsValid = false를 args.IsValid = false로 변경하십시오. – SeaSharp
args.IsValid로 변경하고 customvalidator 내부의 모든 로직을 제거했습니다. 페이지가 페이지를 제출할 때 그것이 유효하지 않다고해도 ... –