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