Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ScriptManager导致使用验证器进行回发_C#_Asp.net_Validation_Scriptmanager - Fatal编程技术网

C# ScriptManager导致使用验证器进行回发

C# ScriptManager导致使用验证器进行回发,c#,asp.net,validation,scriptmanager,C#,Asp.net,Validation,Scriptmanager,以下是我的整个页面正文html: <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div> <asp:TextBox runat="server" ValidationGroup="vg1" ID="txtTest" />

以下是我的整个页面正文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>

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

如果我删除了ScriptManager,RequiredFieldValidtor可以完美地工作,因为如果没有填写文本框,则不允许回发(按预期显示“Required”)

有了ScriptManager,回发总是会发生。显示错误,但仍会发生回发。有什么好处?以前不是这样的。ScriptManager中是否缺少一个参数或其他东西来允许这一切正常运行

.NET版本可能是问题所在

我已经确定,这在.NET4.0和earlier中运行得非常好,但是如果使用4.5及更高版本,则会失败。4.5中出现了问题,还是我没有正确地实现它


谢谢

自从.net 4.5版引入了不引人注目的验证以来,有必要在您的Global.asax页面中注册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,验证程序将无法正常工作并允许回发

这些信息来自各种资源和实验。在我最初的问题中,所需要的只是如上所述定义脚本管理器,它工作正常


希望此信息将允许开发人员使用验证程序将回发非侵入性验证连接起来,因为.net 4.5版引入了非侵入性验证,所以有必要在您的系统中注册jquery资源Global.asax页面如下:

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,验证程序将无法正常工作并允许回发

这些信息来自各种资源和实验。在我最初的问题中,所需要的只是如上所述定义脚本管理器,它工作正常


希望此信息将允许开发者使用验证程序将回发非干扰性验证之间的点连接起来

可能的重复请在发布后编辑您以前的问题以包含其他信息,不要删除,然后再问相同的问题(将被标记为已删除的副本)。上一个问题完全不同。这要简单得多,所以我认为这比删除上一篇文章的全部文本并重新开始要好。@Gusman那篇文章很相似,但没有任何线索。他们在谈论部分回发和更新面板。我发布这篇文章是为了让问题尽可能简单。我想知道这是否是一个好问题是.net问题的一个版本。可能的重复请在发布后编辑您以前的问题以包含其他信息,不要删除,然后再次询问相同的问题(将标记为已删除问题的重复)。上一个问题完全不同。这要简单得多,所以我认为这比删除上一篇文章的全部文本并重新开始要好。@Gusman那篇文章很相似,但没有任何线索。他们在谈论部分回发和更新面板。我发布这篇文章是为了让问题尽可能简单。我想知道这是否是一个好问题是.net问题的一个版本。