我想从浏览器中禁用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