2012-12-29 58 views
3

我正在使用asp.net验证控件验证用户输入。我想要的是使用验证控件生成的错误消息更改标签文本。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> 

谢谢。

+0

我喜欢这个想法,但我不确定它可以使用常规的ASP.NET验证控件完成。如果您使用其他验证框架(例如jQuery Validate或其他一些jQuery验证插件)开放解决方案,我可以写出一个关于如何在您的示例中执行此操作的答案。 –

+0

嗨@TomasLycken我是编程新手,所以任何建议和指导将是伟大的学习up.Please显示你的建议谢谢。 – Raghav

+0

在阅读其他人的答案之后,我意识到我脑子里的东西并不适合WebForms范例 - 我想我一直在做ASP.NET MVC太久了:P但是有两个很好的建议可以帮助你尝试! –

回答

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 Validation in Depth

+0

@Raghav:然后设置验证器的“Display =”None“',编辑我的答案。 –

+0

非常感谢先生,顺便说一句,我试图实现的是[链接](http://www.f-i.com/contact)。上述方法是最优的还是我应该去做其他事情? – Raghav

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

+0

嗨@Joe Alfano,谢谢,但有一个问题/如果我删除上述代码中的两个astriks错误消息正在显示两次。 顺便说一下,这里是我想实现的, [链接](http://www.f-i.com/contact) – Raghav

+1

设置验证器显示属性为无。我编辑了我的答案。 –