【问题标题】:Retain client side use of RequiredFieldValidator when using Script manager使用脚本管理器时保留客户端使用RequiredFieldValidator
【发布时间】:2014-01-01 06:32:17
【问题描述】:

在使用脚本管理器时保留客户端使用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 脚本管理器添加到表单中,则所有客户端验证RequiredFieldVALidators 都停止使用客户端验证。对于简单地将脚本管理器引入 Web 表单来说,这是相当大的成本。

所以将这个添加到上面的网络表单是坏人:

    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

最终结果是现在所有 EXISTING RequiredValidators 永远不会运行客户端 - 仅服务器端。

是否有解决上述问题的方法,即将脚本管理器(或 ajax 工具包中的 Ajax 工具包管理器)添加到表单并继续在 Web 表单中享受客户端验证?

【问题讨论】:

    标签: asp.net ajax vb.net


    【解决方案1】:

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

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

    解决办法是把这个appSettings添加到web.config中

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-30
      • 2017-02-08
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2018-04-20
      相关资源
      最近更新 更多