我想從瀏覽器中禁用asp.net驗證服務器控件。我在網上查過,但沒有找到任何方法來禁用服務器端驗證;它只能在客戶端使用JS/jQuery來禁用。如何從瀏覽器禁用asp.net web表單上的服務器端驗證?
這裏是場景:我有一個複選框,並選擇顯示一組文本框。只有當複選框被選中時,所需的字段驗證器纔會爲文本框啓動。我不想在複選框上調用回發。實際上,這些chceck盒子將使用jQuery模板生成,所以回發不是啓用禁用驗證的選項。
我想知道是否有任何方法可以使用某些設置禁用瀏覽器控件的.CausesValidation屬性?或者有什麼方法可以捕獲在page_load之前的某些事件中要考慮進行驗證的控件?
[更新] 基於公認的答案,這裏是我的解決方案:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="req1" ControlToValidate="textbox1" runat="server"
ErrorMessage="enter text"></asp:RequiredFieldValidator>
<asp:TextBox ID="textbox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="req2" ControlToValidate="textbox2" runat="server"
ErrorMessage="enter text for 2"></asp:RequiredFieldValidator>
<asp:CheckBox ID="check1" runat="server" Text="choose" />
<asp:Button ID="submitBtn" runat="server" OnClick="submitBtn_Click" Text="submit" />
<asp:CustomValidator ID="cvBox" runat="server" ErrorMessage="Error" ValidationGroup="prueba"
OnServerValidate="Validarcaja"></asp:CustomValidator>
<asp:ValidationSummary ID="summary" runat="server" />
</div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
req1.Enabled = false;
req2.Enabled = false;
}
protected void submitBtn_Click(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
Page.Validate();
if (Page.IsValid)
{
Response.Write("valid form");
}
else
{
Response.Write("invalid form");
}
}
}
protected void Validarcaja(object source, ServerValidateEventArgs args)
{
if (check1.Checked)
{
req1.Enabled = true;
req1.Validate();
}
}
感謝@netadictos .. :) – Amit
@Amit驗證的良好鏈,;-) – netadictos