【问题标题】:Telerik asp.net client side validationTelerik asp.net 客户端验证
【发布时间】:2015-11-08 06:02:58
【问题描述】:

我想在回发之前对表单进行客户端验证,因此我使用 onclientclick 事件来验证表单,如果它有效,请执行一些服务器端的操作。

这是我的代码:

<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>

而这个地狱般的东西正在导致回发覆盖我的代码,所以这很令人沮丧。

我的老板强迫我们使用 Telerik,因为他们有这个花哨的 numericTextbox,而且他正在付费。

尝试联系 TELERIK,但他们表示无法为我们提供支持,因为我们的版本已过期。

【问题讨论】:

    标签: javascript asp.net forms validation telerik


    【解决方案1】:

    由于您需要客户端验证,您可以添加“return 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 调用服务器端代码。

    【讨论】:

    • 更像是一种解决方法,但谢谢,我真的很感激!!
    【解决方案2】:

    出现这种行为的原因是不显眼的验证,这是针对 .Net 4.5 版本的项目构建的默认验证。

    所以当您创建 .NET 4.5 Telerik 网站时,默认的 Web 表单有一个 RadScriptManager。这意味着与 Telerik 控件一起使用的 jQuery 版本在 ScriptManager 中注册为 jquery,因此您需要指定 jQuery 和验证脚本的注册顺序。不显眼验证的验证脚本(WebForms.js 和WebUIValidation.js) 在这种情况下不可用,因此您还需要在站点上安装它们。 以下步骤设置不显眼的验证: 打开 TOOLS > Library Package Manager > Package Manager Console 并运行以下命令以使用 ScriptManager 为 Web 窗体安装 Microsoft Ajax 优化包:

    PM> Install-Package Microsoft.AspNet.ScriptManager.WebForms -Version xxx(您可以在其下载页面查看此 NuGet 包的当前版本)。这将安装脚本文件 WebForms.js 和 WebUIValidation.js网站。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2010-09-14
      • 2017-01-11
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多