首先,我知道我可以使用Javascript,但让我解释一下。
我的目标是能够使用任何验证器:
仅受益于客户端验证。我对继承的控件进行了子类化,并阻止将name属性呈现给客户端。原因是我不想回到服务器的敏感数据。删除name属性可防止使用控件发送该值。
以必填字段为例,它始终无法在服务器上进行验证,因为该值未被发送。我可以使用自定义验证器,但希望利用所有验证类型的所有预构建功能。
希望有人有创意,思考,或者我是否对显而易见的人视而不见,或者只是直截了当。
答案 0 :(得分:0)
重置页面覆盖的IsValid
函数中验证程序的Validate
属性似乎有效:
public override void Validate()
{
base.Validate();
rfvNotEmpty.IsValid = true;
}
答案 1 :(得分:0)
我知道这个问题很简单,但是如果有人需要,我有一个简单的解决方案。
您只需将客户端验证器创建为Enabled =“ false”,并在PreRender事件中将其启用,服务器端验证会出现在PreRender之前,因此将被忽略,因为已禁用,但会生成prerender客户端代码和验证器将启用并工作。
答案 2 :(得分:-1)
您可以尝试使用ASP.Net Ajax Control Toolkit,它是一个用于Web开发的开源库。
如果您想使用标准的Asp.Net控件,您可以使用验证控制器,它有compare,custom,range,regex和required field validator。
问候
答案 3 :(得分:-1)
如果我理解你的问题是正确的,你希望服务器端验证控件在客户端工作,那么你需要在你的页面上添加最新的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>