【发布时间】:2014-02-11 19:01:13
【问题描述】:
我有一个禁用所有验证器的 ASP.NET Web 表单。我只想为单击提交按钮后用户可见的那些控件启用验证器。
这是我的功能:
protected void Submit_Click(object sender, System.EventArgs e) {
if (ddlSite.Visible){
rfvSite.Enabled = true;
base.Validate();
}
else {
rfvSite.Enabled = false;
}
上面的代码对于大多数控件都可以正常工作。但是我有几个控件的显示设置为无。我只在做出某些选择时才使它们可见。这些不可见的控件正在引起问题。例如。 pnlOpv 面板包含一个文本框,其中包含两个验证器 revOpv 和 rfvOpv。
if (pnlOpv.Visible){
revOpv.Enabled = true;
rfvOpv.Enabled = true;
}
else {
revOpv.Enabled = false;
rfvOpv.Enabled = false;
}
上面的代码给我带来了问题,因为即使上面的文本框不可见,因为它包含在不可见的面板中。出于某种奇怪的原因,表单认为验证器已启用,并将返回页面无效。有没有发现任何错误?
<asp:panel id="pnlOpv" style="margin:0px; padding:0px; display: none;" runat="server">
<label for="txtOpoo" id="opo" style="display:inline; margin-top:5px;"><strong>Other Place of Visit</strong></label>
<asp:TextBox type="text" id="txtOpv" tabindex="2" size="20" maxlength="50" runat="server" style="display:inline; margin-top:5px; background-color:#FCFCFC" EnableViewState="true" />
<asp:RegularExpressionValidator ID="revOpv" runat="server"
ControlToValidate="txtOpv"
ValidationExpression="^[a-zA-Z0-9''-'-,.\s]{1,50}$"
Display="Dynamic"
Font-Names="verdana" Font-Size="10pt" Enabled="false" EnableClientScript="true" EnableViewState="true"> Invalid format.
</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator id="rfvOpv" runat="server"
ControlToValidate="txtOpv"
Display="Dynamic"
Font-Names="Verdana" Font-Size="10pt" Enabled="false" EnableViewState="true" EnableClientScript="true">
Please type other place of visit.
</asp:RequiredFieldValidator>
</asp:panel>
【问题讨论】:
-
为什么不展示模型?查看需要什么并检查您在那里的验证以及您想要在代码中实现的验证。
-
你为什么不尝试使用验证组?
标签: c# asp.net validation