ScriptManager 导致带有验证器的回发

ScriptManager causing postbacks with validators

这是我的整个页面 body html:

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <asp:TextBox runat="server" ValidationGroup="vg1" ID="txtTest" />
            <asp:RequiredFieldValidator runat="server" ErrorMessage="Required" ControlToValidate="txtTest" ValidationGroup="vg1" />
            <asp:Button runat="server" ValidationGroup="vg1" Text="test" />
        </div>
    </form>
</body>

header 中没有任何内容。没有额外的 .js 或类似的东西。

如果我删除 ScriptManager,RequiredFieldValidtor 可以完美工作,因为如果文本框未填写(按预期显示 "Required")则不允许回发。

有了 ScriptManager,回发总是会发生。错误显示但回发仍然发生。是什么赋予了?这以前不是这样工作的。我是否缺少参数或 ScriptManager 中的某些内容以允许这一切运行?

.NET 版本可能是问题所在

我确定这在 .net 4.0 和 eariler 中工作得很好,但如果您使用 4.5 及更高版本,则会失败。 4.5 中出现问题,还是我没有正确实施它?

谢谢!

自从 .net 版本 4.5 引入了不显眼的验证后,就必须在 [=32= 中注册您的 jquery 资源]页面如下:

void Application_Start(object sender, EventArgs e)
{
    string JQueryVer = "1.7.1";
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
    {
        Path = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
        DebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
        CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
        CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
        CdnSupportsSecureConnection = true,
        LoadSuccessExpression = "window.jQuery"
    });

}

但是,您还必须像这样在标记中正确定义脚本管理器:

<asp:ScriptManager runat="server" EnableScriptGlobalization="True" EnableCdn="True">
     <Scripts>
         <asp:ScriptReference Name="jquery" />
         <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" />
     </Scripts>
</asp:ScriptManager>

如果不启用 Cdn,验证器将无法正常运行并允许回发。

此信息是通过各种资源和实验获得的。在我原来的问题中,所有必要的就是如上所述定义脚本管理器并且它工作正常。

希望此信息将允许开发人员使用 验证器 不显眼的验证 [=27] 连接 postbacks 之间的点=].