2012-07-26 68 views
2

我有非常简单的aspx页面:如何在客户端禁用asp.net验证器?

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:textbox runat="server" ID="tbText" ValidationGroup="Address"></asp:textbox> 
     <br /> 
     <asp:RequiredFieldValidator ID="rfvText" runat="server" ControlToValidate="tbText" 
      ValidationGroup="Address" ErrorMessage="RequiredFieldValidator">Enter text</asp:RequiredFieldValidator> 
     <br /> 
     <asp:Button runat="server" Text="Submit" ID="btnSubmit" OnClick="Submit_Click" 
      ValidationGroup="Address" OnClientClick="DisableValidator();" /> 
     <script type="text/javascript"> 
      function DisableValidator() { 
       alert('Called and disable validators before submit'); 

       var validator = document.getElementById("<%=rfvText.ClientID%>"); 
       validator.validationGroup = "someGroup"; 
       ValidatorEnable(validator, false); 
      } 
     </script> 
    </div> 
    </form> 
</body> 
</html> 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Submit_Click(object sender, EventArgs e) 
    { 
     Validate("Address"); 
     if (!IsValid) 
     { 
      throw new Exception("Page is no valid"); 
     } 
    } 
} 

页面上的所有元素都=的ValidationGroup“地址”,但我需要禁用我的验证之前我按一下按钮。因此,在客户端网站上它会禁用,但是当我尝试在服务器上验证它时,我的网页在服务器上无效,但在客户端上有效。

如何禁用客户端上的验证器以便在服务器上也被禁用?

谢谢!

回答

1

当页面回发时,您将不得不可编程地禁用它,但是您解释验证器应该在客户端上被禁用,然后需要在服务器上复制,并设置Enabled="false"

0

如果您使用.NET 4,请尝试使用EnableClientScript属性。我从来没有使用它,但根据docs,它应该满足您的需求。

获取或设置一个值,该值指示是否启用客户端验证。

<asp:Button runat="server" Text="Click Me" EnableClientScript="False" /> 
+0

按钮没有这个属性! ??? – ihorko 2012-07-26 15:19:38

+0

你正在运行什么版本的.NET? – Jeff 2012-07-26 15:21:16

+0

.net version 3.5 – ihorko 2012-07-26 15:21:41

2

您应该使用EnableClientScript="False"验证控制,那就是:

<asp:RequiredFieldValidator ID="rfvText" 
     runat="server" ControlToValidate="tbText" 
     ValidationGroup="Address" 
     EnableClientScript="False" 
     ErrorMessage="RequiredFieldValidator">Enter Text 
</asp:RequiredFieldValidator>