2

asp.net ページをコンパイルしようとすると、異常な一連のエラーに対処しています。このページは私のマスターページから継承しています。そこから 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>

最初のエラーは次のとおりです。

ID '' のコントロールには、ページに ScriptManager が必要です。ScriptManager は、それを必要とするすべてのコントロールの前に表示する必要があります。

ページに ScriptManager がなく、代わりに ScriptManagerProxy を使用すると発生します。マスター ページに ScriptManager がありますが。

ページに ScriptManager を配置すると、別のエラーが発生します。

ページに追加できる ScriptManager のインスタンスは 1 つだけです。

これを機能させるにはどうすればよいですか? これは私の Nuget パッケージの 1 つに問題がありますか? (JuiceUI、Widgmoなど)

リクエストがあれば、喜んでコードを投稿します。

編集: ええ、この全体が奇妙です。奇妙なことに、マスター ページ自体には問題はありませんでした。しかし、他のページがそれを使用した場合にのみ、問題が発生しました. フォームタグの後の最初の要素に移動することが解決策であると私は信じています。私のコードでも ScriptManagerProxy を少し上に移動しましたが。

4

3 に答える 3

2

ScriptManager を masterpage に配置し、ScriptManagerProxy を .aspx ページに配置します。

于 2013-08-01T05:08:20.873 に答える
2

マスター ページのフォーム宣言の近くにスクリプト マネージャーを配置する必要があります。

こちらもご覧ください:ウォークスルー: Ajax 対応の Web サイトの作成

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

2 番目の質問: ScriptManager コントロールの概要

Only one instance of the ScriptManager control can be added to the page.
The page can include the control directly, or indirectly inside a nested
component such as a user control, content page for a master page, or nested
 master page. If a page already contains a ScriptManager control, but a nested
or parent component needs additional features of the ScriptManager control, the
component can include a   ScriptManagerProxy control.
For example, the ScriptManagerProxy control enables you to add scripts and 
services that are specific to nested components.

コンテンツ ページで使用する場合はマスター ページからスクリプト マネージャーを削除するか、マスター ページにスクリプト マネージャーを追加してコンテンツ ページでプロキシを使用する必要があります。

于 2013-08-01T05:41:48.980 に答える