c# - 如何让 ScriptManager 与 ScriptmanagerProxy 一起工作

标签 c# asp.net scriptmanager

当我尝试编译我的 asp.net 页面时,我一直在处理一组不寻常的错误。此页面继承 self 的主页。它应该从那里获取 Scriptmanager。但我得到的错误表明它不是。

现在我的页面中有这个:

    <%@ Page Title="MassUpdate" Language="C#"
         MasterPageFile="~/Site1.Master"
         AutoEventWireup="true"
         CodeBehind="Update.aspx.cs"
         Inherits="AdminSite.Update"
         MaintainScrollPositionOnPostback="true" %>


     <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server" >

        <div id="contentarea">
            <div>
                <h3 style="color:Red; padding-left:5px;">
                    WARNING - This page can push large amounts of data into the database. Use care when using it!
                </h3>
            </div>    


        <asp:ScriptManagerProxy runat="server"  >

        </asp:ScriptManagerProxy>

在我的母版页中,我有这个:

<body>
    <header>
       <div id="banner">

            <h1 style="color:#DBFFFF">UAC Parts Admin</h1>    
    </div>
</header>
<form id="form1" runat="server">

<div id="container">

    <asp:ContentPlaceHolder ID="MainContent" runat="server">


    </asp:ContentPlaceHolder>
    <asp:LoginView ID="LoginView1" runat="server" EnableViewState="false">
        <LoggedInTemplate>
      <div id="menubar">

        <h6>Reports</h6>
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
                <Scripts>
                    <asp:ScriptReference Path="~/Scripts/jquery.js" />
                    <asp:ScriptReference Path="~/Scripts/jqueryui.js" />
                    <asp:ScriptReference Path="~/Scripts/menubar.js" />
                </Scripts>
            </asp:ScriptManager>

第一个错误是这样的:

The control with ID '' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.

当我的页面上没有 ScriptManager 而改用 ScriptManagerProxy 时会发生这种情况。即使我的母版页上有 ScriptManager。

现在,当我在我的页面上放置一个 ScriptManager 时,我得到了一个不同的错误。

Only one instance of a ScriptManager can be added to the page.

我需要做什么才能让它发挥作用? 这是我的一个 Nuget 包的问题吗? (JuiceUI,Widgmo等)

如果需要,我很乐意发布代码。

编辑: 是的,整件事都很奇怪。奇怪的是母版页本身没有问题。但是只有当其他页面使用它时,我才遇到任何问题。将它移动到表单标签之后的第一个元素是我认为的解决方案。尽管我也在代码中将 ScriptManagerProxy 向上移动了一点。

最佳答案

ScriptManager 必须出现在任何 ContentPlaceHolders 之前。一般来说,正如 Joshua 指出的那样,脚本管理器放在表单标签之后的第一个元素中。像这样:

<form id="form1" runat="server">

    <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
            <asp:ScriptReference Path="~/Scripts/jquery.js" />
            <asp:ScriptReference Path="~/Scripts/jqueryui.js" />
            <asp:ScriptReference Path="~/Scripts/menubar.js" />
        </Scripts>
    </asp:ScriptManager>

    <div id="container">

        <asp:ContentPlaceHolder ID="MainContent" runat="server">


        </asp:ContentPlaceHolder>
    </div>
</form>

这是因为使用此母版页的 .aspx 页面提供了放置在 ContentPlaceHolder 控件中的内容。因为您的 ContentPlaceHolder 出现在您的 ScriptManager 之前,位于内容页面中的 ScriptManagerProxy 被抛出,因为 ScriptManager 不会被定义到页面的后面。

这可能有点奇怪,因为您要在多个不同的地方定义控件。但是在所有内容都放在一起之前,代码隐藏不会执行。

关于c# - 如何让 ScriptManager 与 ScriptmanagerProxy 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17974659/

相关文章:

c# - ASP 控件中的必需属性

c# - 如何拆分数组中的元素并将其作为新数组返回

c# - SqlConnection 池似乎不起作用

c# - 按钮点击事件影响不同的窗口

c# - 如何在 C# 的 checkedlistbox 中默认选中两个项目

c# - 如何从 javascript 函数调用代码隐藏方法?

c# - 如何注册 Javascript 函数以在每次回发时运行?

c# - 用C#填充Word模板字段

c# - 如何使用 MS SQL 数据库选择级联 DropDownList

javascript - scriptmanager 和 rokbox 之间的冲突