Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以对asp.net控件进行仅客户端验证?_C#_Asp.net_Vb.net_Validation - Fatal编程技术网

C# 是否可以对asp.net控件进行仅客户端验证?

C# 是否可以对asp.net控件进行仅客户端验证?,c#,asp.net,vb.net,validation,C#,Asp.net,Vb.net,Validation,首先,我知道我可以使用Javascript,但让我解释一下 我的目标是能够使用任何验证器: 必需的 正则表达式 比较 等等 并且只从客户端验证中受益。我正在对继承的控件进行子分类,并防止将name属性呈现给客户端。原因是我不想将敏感数据返回到服务器。删除name属性会阻止值随控件一起发送 以必填字段为例,它在服务器上的验证总是失败,因为没有发送值。我可以使用自定义验证器,但希望利用所有验证类型的所有预构建功能 希望有人有一个创造性的想法,或者如果我对显而易见的东西视而不见,或者如果这完全是不

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

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

  • 必需的
  • 正则表达式
  • 比较
  • 等等
并且只从客户端验证中受益。我正在对继承的控件进行子分类,并防止将name属性呈现给客户端。原因是我不想将敏感数据返回到服务器。删除name属性会阻止值随控件一起发送

以必填字段为例,它在服务器上的验证总是失败,因为没有发送值。我可以使用自定义验证器,但希望利用所有验证类型的所有预构建功能


希望有人有一个创造性的想法,或者如果我对显而易见的东西视而不见,或者如果这完全是不可能的。

你可以尝试使用ASP.Net Ajax控件工具包,它是一个用于web开发的开源库

如果您想使用标准Asp.Net控件,您可以使用验证控制器,其中有compare、custom、range、regex和required field validator


关于

在页面的覆盖的
验证
功能中重置验证器的
IsValid
属性似乎有效:

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

若我正确理解了您的问题,您希望服务器端验证控件在客户端工作,那个么您需要在页面上添加最新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>


我知道这个问题很简单,但如果有人需要,我有一个简单的解决方案


您只需将客户端验证程序创建为Enabled=“false”,并在启用它的PreRender事件中,服务器端验证显示在PreRender之前,因此它将被忽略,因为它已禁用,但prerender将生成客户端代码,验证程序将启用并工作。

恐怕您误解了这个问题。注意:我不知道为什么我的答案是唯一一个没有被否决的答案(尚未),但我不是否决其他答案的人。:-)哈哈,我听到了。我正在看你的答案。有人也击沉了我的战舰,我不知道为什么。谢谢你解除了我的战舰,如果是你的话。:)是的,是我(向上投票以取消其他人的向下投票)。我认为你的想法很好,但我还没有试过看它是否有不好的一面。