是否可以在asp.net控件上进行仅客户端验证?

时间:2016-05-13 01:14:02

标签: c# asp.net vb.net validation

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

我的目标是能够使用任何验证器:

  • 必需
  • 正则表达式
  • 比较

仅受益于客户端验证。我对继承的控件进行了子类化,并阻止将name属性呈现给客户端。原因是我不想回到服务器的敏感数据。删除name属性可防止使用控件发送该值。

以必填字段为例,它始终无法在服务器上进行验证,因为该值未被发送。我可以使用自定义验证器,但希望利用所有验证类型的所有预构建功能。

希望有人有创意,思考,或者我是否对显而易见的人视而不见,或者只是直截了当。

4 个答案:

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