ScriptManager必须出现在需要它的任何控件之前

时间:2012-11-20 13:04:59

标签: asp.net webforms

我创建了一个新的ASP.NET Web应用程序,调试后我收到了服务器错误

  

ID为'WaitingPopup1'的控件需要页面上的ScriptManager。 ScriptManager必须出现在需要它的任何控件之前。

我是ASP.NET的新手,所以我可以在web.config中安装我的ScriptManager吗?

10 个答案:

答案 0 :(得分:58)

ScriptManager是需要添加到您创建的页面的控件。

看看这个Sample AJAX Application

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

答案 1 :(得分:8)

如果您在页面上使用microsoft ajax,则需要将the script manager control添加到您的母版页或需要它的页面。它管理ASP.NET Ajax脚本库和脚本文件,部分页面呈现以及Web和应用程序服务的客户端代理类生成

<asp:ScriptManager ID="ScriptManger1" runat="Server">
</asp:ScriptManager>

full usage

<asp:ScriptManager
    AllowCustomErrorsRedirect="True|False"
    AsyncPostBackErrorMessage="string"
    AsyncPostBackTimeout="integer"
    AuthenticationService-Path="uri"
    EnablePageMethods="True|False"
    EnablePartialRendering="True|False"
    EnableScriptGlobalization="True|False"
    EnableScriptLocalization="True|False"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    LoadScriptsBeforeUI="True|False"
    OnAsyncPostBackError="AsyncPostBackError event handler"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnResolveScriptReference="ResolveScriptReference event handler"
    OnUnload="Unload event handler"
    ProfileService-LoadProperties="string"
    ProfileService-Path="uri"
    RoleService-LoadRoles="True|False"
    RoleService-Path="uri"
    runat="server"
    ScriptMode="Auto|Inherit|Debug|Release"
    ScriptPath="string"
    SkinID="string"
    SupportsPartialRendering="True|False"
    Visible="True|False">
        <AuthenticationService
            Path="uri" />
        <ProfileService
            LoadProperties="string"
            Path="uri" />
        <RoleService
            LoadRoles="True|False"
            Path="uri" />
        <Scripts>
            <asp:ScriptReference
                Assembly="string"
                IgnoreScriptPath="True|False"
                Name="string"
                NotifyScriptLoaded="True|False"
                Path="string"
                ResourceUICultures="string"
                ScriptMode="Auto|Debug|Inherit|Release" />
        </Scripts>
        <Services>
            <asp:ServiceReference
                InlineScript="True|False"
                Path="string" />
        </Services>
</asp:ScriptManager>

答案 2 :(得分:5)

您可以在页面的<Form>标记下方添加脚本管理器标记。以下是放置脚本管理器标记的方法。

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

如果您使用母版页,建议您在母版页中使用脚本管理器,这样您就不必在包含AJAX控件的每个页面上反复编写它。

答案 3 :(得分:4)

只需将ScriptManager置于form标记内,如下所示:

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

如果它有Master Page,则将其放入母版页本身。

答案 4 :(得分:2)

在很多情况下,脚本管理器可能会出现类似的问题。首先尝试将脚本管理器添加到适当的占位符或在使用Ajax控件的内容之前出现的任何位置Holder。

  1. 我们需要在使用任何AJAX控件时添加ScriptManager,而不仅仅是更新Panel。 <asp:ScriptManager ID="ScriptManger1" runat="Server" />

  2. 如果您使用的是最新的Ajax Control Toolkit(我不确定版本4.0或4.5),您需要使用特定的ToolkitScriptManager而不是默认的Ajax扩展中的ScriptManager。

  3. 您只能在页面上使用一个ScriptManager或ToolKitScriptManager,如果您已在母版页上添加它,则无需再在网页上添加它。

  4. 此处提到的问题可能是因为ContentPlaceHolder请检查您的母版页上有多少内容占位符。让我们举一个例子,如果你有2个内容占位符&#34; Head&#34;和&#34; ContentPlaceHolder1&#34;在Master Page和ContentPlaceHolder1上是您的Content Page.please检查下面的代码我在这里添加了我的ScriptManager在第二个占位符下面有更新面板。

  5.  
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <asp:ContentPlaceHolder id="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ContentPlaceHolder id="MainContent" runat="server">
            <asp:ScriptManager ID="ScriptManger1" runat="Server" />
              <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        </ContentTemplate>
    </asp:UpdatePanel>
            </asp:ContentPlaceHolder>
        </div>
        </form>
    </body>
    </html> 
    

    当我们在网页上默认选择母版页时,我们大多数人在设置网页表单时会出错,因为MasterPage会有相同数量的占位符。

    <%@ Page Title="" Language="C#" MasterPageFile="~/Master Pages/Home.master" AutoEventWireup="true" CodeFile="frmCompanyLogin.aspx.cs" Inherits="Authentication_frmCompanyLogin" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    </asp:Content>
    

    我们无需删除任何PlaceHolder它是指导结构,但您必须在Same PlaceHolder中添加Web表单内容,您在其中添加ScriptManager(在母版页上)或在适当的占位符或任何出现的Holder中添加脚本管理器在使用Ajax控件的内容之前。

答案 5 :(得分:1)

ScriptManager是您使用

在页面中注册的网络控件
<asp:ScriptManager ID="ScriptManger1" runat="Server" />

在Form标签内

答案 6 :(得分:1)

它只是想在ASPX页面上使用ASP控件。我通常把我放在标签下面,或者放在主人身体的第一个内容区域内(如果你使用母版页)

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="scriptManager" runat="server"></asp:ScriptManager>
        <div>
            [Content]
        </div>
    </form>
</body>

答案 7 :(得分:0)

在ASP.NET页面上,在表单标记内。

答案 8 :(得分:0)

脚本管理器必须在使用前放到页面上。这将直接在页面本身上,或者,如果您使用它们,则在主页面上。

标记将是;

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

答案 9 :(得分:0)

    带有headrunat="server"标记的
  • form <{1}}标记内runat="server"
  • 在包含需要控件的ContentPanels之前的
  • - UpdatePanels的典型控件:

             &LT;%=的PageTitle%GT;                                                                                                   

</form>
 </body>