【问题标题】:Is it possible to have client-side only validation on asp.net controls?是否可以对 asp.net 控件进行仅客户端验证?
【发布时间】:2016-05-13 01:14:02
【问题描述】:

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

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

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

并且只受益于他们的客户端验证。我正在对继承的控件进行子类化,并防止将 name 属性呈现给客户端。原因是我不想返回服务器的敏感数据。删除 name 属性会阻止该值与控件一起发送。

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

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

【问题讨论】:

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


    【解决方案1】:

    在页面的被覆盖的Validate 函数中重置验证器的IsValid 属性似乎有效:

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

    【讨论】:

    • 注意:我不知道为什么我的答案是唯一没有被否决的答案(还),但我不是对其他答案投反对票的人。 :-)
    • 哈哈。我听到了。我现在正在看你的答案。有人也击沉了我的战舰,我不知道为什么。
    • 感谢你击沉我的战舰,如果是你的话。 :)
    • 是的,是我(赞成取消其他人的反对票)。我认为你的想法很好,但我没有尝试过它是否有任何缺点。
    【解决方案2】:

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

    您只需将客户端验证器创建为 Enabled="false" 并在您启用它的 PreRender 事件中,服务器端验证出现在 PreRender 之前,因此它将被忽略,因为它已禁用,但 prerender 将生成客户端代码和验证器将启用并正常工作。

    【讨论】:

      【解决方案3】:

      您可以尝试使用 ASP.Net Ajax Control Toolkit,它是一个用于 Web 开发的开源库。

      如果你想使用标准的 Asp.Net 控件,你可以使用验证控制器,有比较、自定义、范围、正则表达式和必填字段验证器。

      问候

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 恐怕你误解了这个问题。
        猜你喜欢
        • 2010-11-21
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 2017-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多