1
我有一些前端的标记,看起来像这样有条件渲染字段验证
<asp:TextBox ID="txtFirst" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtFirst" />
<% if(DisplayRemainingFields) { %>
<asp:TextBox ID="txtSecond" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtSecond" />
<% } %>
<asp:Button ID="btnSubmit" runat="server" Text="SUBMIT" onclick="btnSubmit_Click" />
,并在我的代码隐藏我有这样的事情:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if(!Page.IsValid) {return;}
//Process fields
}
如果DisplayRemainingFields
是假的(预防txtSecond
和RequiredFieldValidator2
被渲染),Page.IsValid
将始终返回false,但如果我注释掉RequiredFieldValidator2
,则Page.IsValid
返回true。在Chrome浏览器中查看呈现的源代码,很明显,这些控件未添加到页面中,所以为什么Page.IsValid
在这些情况下返回false,以及如何通过在我的前端标记中使用条件语句来完成此项工作?
不幸的是,这并没有解决问题。另外,我假设你的意思是'DisplayRemainingFields'而不是'!DisplayRemainingFields' –
我的意思是DisplayRemainingFields。好的,我正在编辑答案。你可以在Page.IsValid上放一个调试点来询问Page.Validators集合来验证它是导致这个问题的RequiredFieldValidator2吗? – Josh