3

我正在使用 asp.net 验证控件来验证用户输入。我想要的是使用验证控件生成的错误消息来更改标签文本。

<asp:Label ID="Label1" runat="server" Text="Whats your name"></asp:Label>
<asp:TextBox ID="nameB" Width="322px" Height="30px" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ValidationGroup="business" runat="server" ErrorMessage="Please tell us your name." ControlToValidate="nameBuisness" CssClass="errMsg" Display="Dynamic"></asp:RequiredFieldValidator>

谢谢你。

4

2 回答 2

1

一种方法是处理提交按钮的OnClientClick-event 并调用 javascript 函数,例如:

<script type="text/javascript">
    function displayValidationResult() {
        // Do nothing if client validation is not available
        if (typeof (Page_Validators) == "undefined") return;
        var LblName = document.getElementById('LblName');
        var RequiredName = document.getElementById('RequiredName');
        ValidatorValidate(RequiredName);
        if (!RequiredName.isvalid) {
            LblName.innerText = RequiredName.errormessage;
        }
    }
</script>

<asp:Label ID="LblName" runat="server" Text="Whats your name"></asp:Label>
<asp:TextBox ID="TxtNameBusiness" Width="322px" Height="30px" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredName" ValidationGroup="business"
    runat="server" ErrorMessage="Please tell us your name." ControlToValidate="TxtNameBusiness"
    CssClass="errMsg" Display="None"></asp:RequiredFieldValidator>
<asp:Button ID="BtnSumbit" runat="server"  Text="Submit"
    OnClientClick="displayValidationResult()" ValidationGroup="business" />

我使用了一些可用的 ASP.NET 客户端验证方法。我还将您的控件重命名为更有意义,并添加了一个提交按钮。

ASP.NET 深度验证

于 2012-12-29T22:08:34.477 回答
1

如果您的要求是要使用内置的 ASP.Net 验证控件进行此验证,那么您将需要使用 ASP.Net CustomValidator 控件。这不能使用 ASP.Net RequiredFieldValidator 控件来完成。要执行您指定的验证,请在您的页面上放置一个 CustomValidator 控件,以便标记如下所示:

<asp:Label ID="Label1" runat="server" Text="Whats your name"></asp:Label>

<asp:TextBox ID="nameB" Width="322px" Height="30px" runat="server"></asp:TextBox>

<asp:CustomValidator ID="CustValidator" runat="server" ControlToValidate="nameB" 
    ValidateEmptyText="true"  ErrorMessage="Please tell us your name."  
    onservervalidate="CustValidator_ServerValidate" Display="none"  >**</asp:CustomValidator>

<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click"  CausesValidation="true"  />

然后,您需要编写自定义验证器。服务器端验证代码如下所示:

    protected void CustValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (string.IsNullOrWhiteSpace(args.Value))
        {
            Label1.Text = CustValidator.ErrorMessage;
            args.IsValid = false;
        }
        else
        {
            Label1.Text = "Whats your name";
            args.IsValid = true;
        }
    }

此自定义验证器将为您提供所需的行为。

通常,当您使用 CustomValidator 控件时,您应该同时进行服务器端验证(为了安全)和客户端验证(为了更好的 UI 体验)。要获得客户端验证,您需要在 javascript 和/或 jQuery 中编写一个客户端函数来进行类似的验证,然后将其分配给自定义验证器的 ClientValidationFunction。

可以在MSDN 文档中找到有关 CustomValidator 控件的更多信息。

于 2012-12-29T22:23:33.560 回答