簡體   English   中英

是否可以在 asp.net 控件上進行僅客戶端驗證?

[英]Is it possible to have client-side only validation on asp.net controls?

首先,我知道我可以使用 Javascript,但讓我解釋一下。

我的目標是能夠使用任何驗證器:

  • 必需的
  • 正則表達式
  • 比較
  • 等等

並且只從他們的客戶端驗證中受益。 我正在對繼承的控件進行子類化,並防止將名稱屬性呈現給客戶端。 原因是我不想返回服務器的敏感數據。 刪除名稱屬性可防止值隨控件一起發送。

以必填字段為例,它總是在服務器上驗證失敗,因為未發送值。 我可以使用自定義驗證器,但想利用所有驗證類型的所有預構建功能。

希望有人有創意,想法,或者如果我對顯而易見的東西視而不見,或者如果它是不可能的。

在頁面的重寫Validate函數中重置驗證器的IsValid屬性似乎有效:

public override void Validate()
{
    base.Validate();
    rfvNotEmpty.IsValid = true;
}

我知道這個問題很簡單,但如果有人需要,我有一個簡單的解決方案。

您只需將客戶端驗證器創建為 Enabled="false" 並在 PreRender 事件中啟用它,服務器端驗證出現在 PreRender 之前,因此它將被忽略,因為它被禁用,但預渲染將生成客戶端代碼和驗證器將被啟用並工作。

您可以嘗試使用 ASP.Net Ajax Control Toolkit,它是一個用於 Web 開發的開源庫。

如果您想使用標准的 Asp.Net 控件,您可以使用驗證控制器,其中包含比較、自定義、范圍、正則表達式和必填字段驗證器。

問候

如果我理解你的問題是正確的,你希望你的服務器端驗證控件在客戶端工作,那么你需要在你的頁面上添加對最新 jquery 文件的引用,如示例所示。

服務器端控件將驗證客戶端,並且在驗證客戶端之前不會將表單發布到服務器端。

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="ValidationTest.aspx.vb" Inherits=".ValidationTest" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
    <asp:Panel runat="server">
        <asp:TextBox runat="server" ID="txtName" CssClass="form-control"  />
        <asp:RequiredFieldValidator
            ID="rvtxtName"
            InitialValue=""
            runat="server"
            ControlToValidate="txtName"
            ForeColor="Red"
            ErrorMessage="*Field Required!"
            Display="Dynamic"
            ValidationGroup="add">
        </asp:RequiredFieldValidator>
        <asp:Button runat="server" ID="btnSubmit" Text="Save"  ValidationGroup="add" />
    </asp:Panel>


   </form>
</body>

暫無
暫無

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

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