Asp.net验证错误消息,用于更改标签文本

时间:2012-12-29 21:43:00

标签: asp.net validation webforms

我正在使用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>

谢谢。

2 个答案:

答案 0 :(得分:1)

一种方法是处理提交按钮的OnClientClick - 事件并调用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 Validation in Depth

答案 1 :(得分: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。

有关CustomValidator控件的更多信息,请参见MSDN documentation