2015-08-14 182 views
0

我想客户端在回发前验证表单,所以我使用onclientclick事件来验证表单,如果它是有效的,请做一些服务器端的东西。Telerik asp.net客户端验证

这里我的代码:

<head runat="server"> 
    <script type="text/javascript" id="Script1"> 
     function performCheck() { 
      return $("TextBox1").val() == ""; 
     } 
</script> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server" > 
     <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 

     </telerik:RadScriptManager> 
    <div> 
      <asp:TextBox ID="TextBox1" runat="server" CausesValidation="true" ValidationGroup="thisGpo"></asp:TextBox> 
     <asp:RequiredFieldValidator EnableClientScript="true" ID="RequiredFieldValidator1" ValidationGroup="thisGpo" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator> 
     <asp:Button OnClientClick="performCheck()" ID="Button1" runat="server" Text="Button" ValidationGroup="thisGpo" CausesValidation="true" />  </div> 
    </form> 
</body> 

问题是,如果我使用Telerik控制,他们添加标记

<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
</telerik:RadScriptManager> 

这个东西的形式到底是怎么造成的回传overring我的代码,所以它是令人沮丧的。

我的老板迫使我们使用Telerik,因为他们有这个奇特的数字文字框,他正在付钱。

试图联系TELERIK,但他们提到他们不能给我们支持,因为我们的版本已过期。

回答

0

经验丰富的行为的原因是Unobtrusive验证,这是项目构建与.Net 4.5版本的默认验证。

因此,当您创建.NET 4.5 Telerik网站时,默认Web窗体具有RadScriptManager。这意味着与Telerik控件一起使用的jQuery版本将作为jQuery注册到ScriptManager中,因此您需要指定jQuery和验证脚本的注册顺序。不显眼验证的验证脚本(WebForms.js和WebUIValidation.js)在这种情况下不可用,因此您还需要在网站上安装它们。 以下步骤设置不引人注目的验证步骤: 开放工具>库包管理器>包管理器控制台,并运行下列命令来与ScriptManager的安装Web窗体微软的Ajax优化包:

PM>安装,包微软。 AspNet.ScriptManager.WebForms -Version xxx(您可以在其下载页面中检查NuGet软件包的当前版本)。这将在Web站点上安装脚本文件WebForms.js和WebUIValidation.js。

配置RadScriptManager以指定在验证脚本之前注册jQuery。

1

既然你想要客户端验证,你可以添加'返回false;'到的OnClientClick

<asp:Button OnClientClick="performCheck(); return false;" ID="Button1" runat="server" Text="Button" ValidationGroup="thisGpo" CausesValidation="true" />  

然后有所谓的,我建议在服务器端或者创建一个隐藏的按钮调用服务器端的方法或使用了Ajax。

使用隐藏按钮:

<asp:Button runat="server" ID="btnDoTheThing" style="display: none;" OnClick="btnDoThething_Click"></asp:Button> 

服务器端代码:

protected void btnDoTheThing_Click(object sender, EventArgs e) 
{ 
      // Do The Thing 
} 

所以一旦JavaScript验证完成,是有效的,那么使用jQuery点击与像

呼叫按钮
$("#btnDoTheThing").click(); 

或者,您可以使用Ajax调用服务器端代码,一旦验证有效。

+0

更像一个解决方法,但谢谢,我真的很感激它! –