使用脚本管理器时,保留客户端使用RequiredFieldValidator

时间:2014-01-01 06:32:17

标签: asp.net ajax vb.net

使用脚本管理器时保留客户端使用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表单中的客户端验证?

1 个答案:

答案 0 :(得分:1)

有点挖掘和一些BinGoogle我发现了这个问题。

不幸的是,在使用.net 4.5时,将脚本管理器控件放入表单将禁用客户端验证。

解决方案是将此appSettings添加到web.config

appSettings>
  <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
 </appSettings>

以上将强制丢失HTML5客户端验证,但结果是客户端验证将返回到使用脚本管理器的表单。