即使验证程序没有“错误消息”,ValidationSummary面板也会显示出来。当我点击提交无效登录时,错误会显示在摘要中。那部分没事。当我使用空文本框提交时,它应该只显示' *',但它也会显示一个空的摘要面板。我怎么能阻止这个。 [有.summary,header,summary ul,.summary ul li的css类。
JS:
function validateTextBox(sender, args) {
var target = document.getElementById(sender.controltovalidate);
var is_valid = target.value != "";
if (is_valid) {
target.className = "";
}
else {
target.className = "validate";
}
args.IsValid = is_valid;
}
ASPX:
<asp:ValidationSummary ID="vs" runat="server" CssClass="summary"
ValidationGroup="vsGroup" DisplayMode="BulletList" EnableClientScript="true"
HeaderText="<div class='header'> Please Correct The
Following</div>" />
<asp:TextBox ID="txtSurname" runat="server" class=""></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ValidationGroup="vsGroup" ControlToValidate="txtSurname"
ClientValidationFunction="validateTextBox" Text="*"
ForeColor="Red" ValidateEmptyText="true" ></asp:CustomValidator>
<asp:TextBox ID="txtLogin" runat="server" class=""></asp:TextBox>
//....CustomValidator2 just as above..
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server"
ControlToValidate="txtLogin" Text="*" ForeColor="Red"
ValidationExpression="^[a-z]{8,10}$" Display="Dynamic"
ErrorMessage="Login Does Not Match The Requirements" ValidationGroup="vsGroup"
EnableClientScript="true"></asp:RegularExpressionValidator>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" ValidationGroup="vsGroup" />
答案 0 :(得分:2)
尝试为ShowValidationErrors
控件设置false
属性为ValidationSummary
。将此值设置为
如果应显示验证程序控件的验证摘要,则为true;否则为false。否则,错误。
默认情况下,此值为true
。
阅读MSDN here。
修改强>
如果你需要为某些控件而不是所有控件禁用ValidationSummary,你可以在客户端和服务器端执行此操作。
var CustomVal = document.getElementById('CustomValidator1ClientID');
ValidatorEnable(CustomVal, false);
点击此链接:http://www.codeproject.com/Articles/8635/Custom-Validation-Summary-in-ASP-NET以及此链接:ASP.NET Validation Summary: How to disable validator with JavaScript?
在服务器端,您可以在Page_Load
中执行以下操作,以检查是否有任何验证器设置了ErrorMessage
,如果没有,则禁用验证器:
if( String.IsNullOrEmpty(CustomValidator1.ErrorMessage))
//if ErrorMessage is empty, disable this validator only
CustomValidator1.Enabled=false;
IInd Case :: 当您只想禁用ValidationSummary
而不是验证器时
在这种情况下,您只需将ValidationGroup
属性设置如下:
//标记
<asp:ValidationSummary ID="vs" runat="server" ValidationGroup="Group1"...
//代码隐藏
protected override void Page_Load(object sender, EventArgs e)
{
if( String.IsNullOrEmpty(CustomValidator1.ErrorMessage))
//if ErrorMessage is empty, exclude this from Validation Summary
CustomValidator1.ValidationGroup="";
CustomValidator2.ValidationGroup="Group1";
}
现在确保您将ValidationGroup
属性分配给ValidationSummary
控件。 所以,提示:所有此类控件的错误消息应显示在ValidationSummary
中,将其ValidationGroup
属性设置为与ValidationSummary
ValidationGroup
相同属性。
那些不应在ValidationSummary
中显示错误消息的控件,只需将其ValidationGroup
属性设置为空。
注意:您也可以在代码后面为ValidationGroup
设置ValidationSummary
属性。此外。确保您还将ValidationGroup
属性和CausesValidation
属性添加到“提交”按钮标记,例如:<asp:Button ID="Submit" runat="server" ValidationGroup="vsGroup" CausesValidation="true"/>
注意2 :: 即使没有错误,ValidationSummary
仍然可以通过以下类似的HTML显示 :
<div id="vs" class="validationSummary" style="">
<ul></ul>
这是验证摘要的默认行为,如果您想这样说,则是一种Bug类型。查看此帖子:http://forums.asp.net/t/1657025.aspx/2/10。
因此,如果您想在没有错误时隐藏上述HTML,请检查是否有任何li
元素,如果没有,则完全隐藏ValidationSummary
错误。
<script type="text/javascript">
$(document).ready(function () {
if ($(".validationSummary li:visible").length === 0) {
$(".validationSummary").hide();
}
});
</script>
</div>
答案 1 :(得分:1)
您可以将其设置为Enabled="false"
或Visible="false"
,然后在触发CustomValidator
时(如果需要),您可以在后面的代码中将其设置为vs.Enabled="true"
或和vs.Visible="true"