[英]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.