使用脚本管理器时保留客户端使用RequiredFieldValidator
我在asp.net表单中有以下内容(vs2013,net4.5,vb.net)
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server" ControlToValidate="TextBox1" ErrorMessage="Required text box">
</asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
以上运行正常,并且在文本框中输入值之前不会回发。这很好并且非常有意义(大量应用程序使用上述方法)。
但是,如果我将脚本管理器控件或Ajax ToolKit脚本管理器添加到表单中,则所有CLIENT端验证RequiredFieldVAlidators将使用clinet端验证进行STOP。将脚本管理器简单地引入Web表单是一个相当大的成本。
所以将这个添加到上面的网络表单是坏人:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
现在最终结果是所有EXISTING RequiredValidators从不运行客户端 - 仅服务器端。
是否有上述解决方法,即将脚本管理器(或ajax工具包中的Ajax工具包管理器)添加到表单并继续享受Web表单中的客户端验证?
答案 0 :(得分:1)
有点挖掘和一些BinGoogle我发现了这个问题。
不幸的是,在使用.net 4.5时,将脚本管理器控件放入表单将禁用客户端验证。
解决方案是将此appSettings添加到web.config
appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
以上将强制丢失HTML5客户端验证,但结果是客户端验证将返回到使用脚本管理器的表单。