如果我有以下内容:
<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,我是否必须禁用客户端验证器?
答案 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