27

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

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

我是 ASP.NET 的新手,所以我应该在哪里安装我的 ScriptManager,在 web.config 中?

4

11 回答 11

64

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

看看这个示例 AJAX 应用程序

<body>
    <form runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        ...
    </form>
</body>
于 2012-11-20T13:08:51.830 回答
9

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

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

完整的用法

<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>
于 2012-11-20T13:09:33.110 回答
6

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

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

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

于 2012-11-20T13:17:40.617 回答
4

只需像这样放在ScriptManager标签内form

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

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

于 2012-11-20T13:08:54.670 回答
2

在很多情况下,脚本管理器可能会出现这样的问题。你试试这个首先在适当的占位符或任何出现在使用 Ajax 控件的内容之前的占位符中添加脚本管理器。

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

  2. 如果您使用的是最新的 Ajax 控制工具包(我不确定版本 4.0 还是 4.5),您需要使用特定的 ToolkitScriptManager 而不是默认 Ajax 扩展中的 ScriptManager。

  3. 您可以在页面上仅使用一个 ScriptManager 或 ToolKitScriptManager,如果您已将其添加到母版页,则无需在网页上再次添加它。

  4. 这里提到的问题可能是因为 ContentPlaceHolder 请检查您的母版页上有多少内容占位符。举个例子,如果您在母版页上有 2 个内容占位符“Head”和“ContentPlaceHolder1”,而 ContentPlaceHolder1 是您的内容页面。请检查下面的代码,我在这里添加了我在第二个占位符上的 ScriptManager,就在更新面板的下方。

<!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> 

当我们在网页上默认选择母版页时,我们大多数人在设计 Web 表单时都会犯错误,其中占位符的数量与母版页相同。

<%@ 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,但您必须在添加 ScriptManager(在母版页上)的相同 PlaceHolder 中添加 Web 表单内容,或在适当的占位符或任何出现在内容之前的占位符中添加脚本管理器其中使用了 Ajax Control。

于 2015-02-08T02:03:58.280 回答
1

ScriptManager是您在页面中注册使用的 Web 控件

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

在表单标签内

于 2012-11-20T13:09:10.003 回答
1

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

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="scriptManager" runat="server"></asp:ScriptManager>
        <div>
            [Content]
        </div>
    </form>
</body>
于 2012-11-20T13:10:08.160 回答
0

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

于 2012-11-20T13:08:47.490 回答
0

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

标记将是;

 <asp:ScriptManager ID="ScriptManager1" runat="server" LoadScriptsBeforeUI="true"
            EnablePartialRendering="true" />
于 2012-11-20T13:09:44.997 回答
0
  • 带有head标签runat="server"
  • form标签内runat="server"
  • ContentPanels包含需要它的控件之前 - 典型的控件具有UpdatePanels

<%=页面标题%>

</form>
 </body>
于 2015-10-15T14:08:45.597 回答
-1
<asp:ScriptManager ID="scriptManager1" runat="server">
        </asp:ScriptManager>

在标签后添加上面的代码。它对我有用。

于 2021-10-06T03:52:07.460 回答