簡體   English   中英

Telerik asp.net客戶端驗證

[英]Telerik asp.net client side validation

我想在回發之前先對表單進行客戶端驗證,所以我正在使用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聯系,但他們提到他們無法為我們提供支持,因為我們的版本已過期。

由於要進行客戶端驗證,因此可以添加“ 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調用服務器端代碼。

發生這種行為的原因是Unobtrusive驗證,這是針對.Net 4.5版本的項目構建的默認驗證。

因此,當您創建.NET 4.5 Telerik網站時,默認的Web窗體具有RadScriptManager。 這意味着Telerik控件隨附的jQuery版本是通過ScriptManager注冊為jquery的,因此您需要指定jQuery和驗證腳本的注冊順序。無干擾驗證的驗證腳本(WebForms.js和WebUIValidation.js)在這種情況下不可用,因此您還需要在網站上安裝它們。 下面的步驟用於設置無干擾的驗證:打開“工具”>“庫軟件包管理器”>“軟件包管理器控制台”,然后運行以下命令以使用ScriptManager安裝Web窗體的Microsoft Ajax優化包:

PM> Install-Package Microsoft.AspNet.ScriptManager.WebForms -Version xxx(您可以在其下載頁面中查看此NuGet軟件包的當前版本)。這將在網站上安裝腳本文件WebForms.js和WebUIValidation.js。

配置RadScriptManager以指定在驗證腳本之前注冊jQuery。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM