在asp.net中仅显示客户端和服务器验证器的客户端验证

时间:2010-12-12 17:24:47

标签: c# asp.net

如果我有以下内容:

<asp:TextBox id="test" runat="sever"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ControlToValidate="test"  
ErrorMessage="Required"></asp:RequiredFieldValidator>
<asp:Label runat="server" id="lblStatus"></asp:Label>

如果在后面的代码中,我将标签设置为“如果文本框为空则必须输入值”以在服务器端验证它,这很好,但如果启用了javascript,我不想一起显示客户端验证和服务器端标签。如果启用了javascript,我是否必须禁用客户端验证器?

3 个答案:

答案 0 :(得分:1)

是。 :)

嗯,我不确定我理解你的问题,因为你似乎已经自己回答了。你不能只为这个RequiredFieldValidator禁用客户端验证来实现你想要的吗?

<asp:RequiredFieldValidator runat="server" ControlToValidate="test"
    ErrorMessage="Required" EnableClientScript="False"/>

答案 1 :(得分:1)

实际上,您可以使用单个验证器并完成客户端和服务器验证。 ASP.Net将负责确定是否仅在您的帮助下解雇客户端或客户端和服务器。您不应该单独依赖客户端验证,但服务器验证可以是静默的,即您不需要将两条错误消息返回给用户。

因此,您不需要自己的状态标签,并且需要对从页面触发的事件处理程序添加检查。

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if(!Page.IsValid)
    {
        return;
    }
}

答案 2 :(得分:0)

我不确定我是否收到了这个问题,但你可以在你的javascript代码中执行验证并避免发布PostBack。

var doSomething = function(sender, args){
 if(Page_IsValid){
  //Do something cool
  return true;
 }else{
  return false;
 }
}

我今天在工作中遇到了类似的问题,请参考以下链接,它非常有用

ASP.NET Valildation In Depth http://msdn.microsoft.com/en-us/library/aa479045.aspx

相关问题