- PR -

マスターページを使用する場合のScriptManagerについて

1
投稿者投稿内容
ani
常連さん
会議室デビュー日: 2007/05/17
投稿数: 44
投稿日時: 2007-05-17 17:37
始めまして。いつも勉強させていただいています。

ASP.NET AJAXのUpdatePanelコントロールを使用した処理を書いているのですが、うまくいきません。
具体的には、マスターページとコンテンツページが存在するWebサイトで
マスターページにScriptManagerコントロールを配置し、
コンテンツページにScriptManagerProxyコントロールとUpdatePanelコントロールを配置しているのですが、
ページ表示の際に以下のようなエラーが表示されてしまいます。

引用:
エラーメッセージ:
System.InvalidOperationException: The control with ID 'UpdatePanel' requires a ScriptManager on the page.
The ScriptManager must appear before any controls that need it.



ScriptManagerがないというようなエラーだと思うのですが、配置の方法が悪いのでしょうか?
chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2007-05-17 21:25
マスターページに ScriptManager コントロール
コンテンツページに ScriptManagerProxy コントロール

で、問題ないはずですけど。
私の環境では、問題なく動いてます。

.master と .aspx のコードを提示できますか?
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-05-17 21:53
これって、実行時じゃなくてデザイン時に表示されるエラーじゃないですか?
私も同様のケースでデザイン時に表示される場合があるのですが、実行時は特にエラーも出ないので、何だろうなと思いつつもとりあえず目をつぶっています。
解決方法があるのなら知りたいですけど。
ani
常連さん
会議室デビュー日: 2007/05/17
投稿数: 44
投稿日時: 2007-05-18 09:54
chackさん、返信ありがとうございます。
コードは以下の通りです。

<.master>
コード:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage_MasterPage" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Master Page</title>
	<link href="../App_Themes/SystemMenu.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">

...省略

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

...省略

    </form>
</body>
</html>



<.aspx>
コード:
<%@ Page Language="C#" MasterPageFile="~/MasterPage/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="test" %>
<%@ OutputCache Location="None" VaryByParam="None" %>
<%@ MasterType VirtualPath="~/MasterPage/MasterPage.master" %>

<asp:Content ID="PageContent" ContentPlaceHolderID="PageContentPlaceHolder" Runat="Server">

...省略

    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    </asp:ScriptManagerProxy>
    <asp:LinkButton ID="LinkButton1" runat="server">C言語</asp:LinkButton><br />
    <asp:Panel ID="Panel1" runat="server" BackColor="#FFFF80" Height="50px" Width="125px">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:LinkButton ID="LinkButton2" runat="server">名前の変更</asp:LinkButton><br />
                <asp:LinkButton ID="LinkButton3" runat="server">削除</asp:LinkButton><br />
                <asp:LinkButton ID="LinkButton4" runat="server">分類追加</asp:LinkButton>
            </ContentTemplate>
        </asp:UpdatePanel>
    </asp:Panel>
    <ajaxToolkit:PopupControlExtender ID="PopupControlExtender1" runat="server" PopupControlID="Panel1"
        Position="Bottom" TargetControlID="LinkButton1">
    </ajaxToolkit:PopupControlExtender>

...省略

</asp:Content>



何かわかりましたらご教示下さい。
ani
常連さん
会議室デビュー日: 2007/05/17
投稿数: 44
投稿日時: 2007-05-18 10:01
BTさん、返信ありがとうございます。

説明不足で申し訳ありません。
私の場合は実行時にエラーが表示されます。逆にデザイン時にはエラーとなりません。
ネット検索をかけてみると、デザイン時にエラーとなるという記述はあったので、
私の場合は根本的に間違っているのかと思っています。

ちなみに環境を記載していませんでしたが、以下になります。

Windows XP(SP2), VS2005(SP1), .NET Framework 2.0, ASP.NET Ajax 1.0
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-18 10:07
引用:

aniさんの書き込み (2007-05-18 09:54) より:

<.master>
コード:
    <asp:contentplaceholder id="PageContentPlaceHolder" runat="server">
    </asp:contentplaceholder>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>




これ ContentPlaceHolder の前に ScriptManager を移動したらどうなります?
コード:
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:contentplaceholder id="PageContentPlaceHolder" runat="server">
    </asp:contentplaceholder>



_________________
かるあ のメモスニペット
ani
常連さん
会議室デビュー日: 2007/05/17
投稿数: 44
投稿日時: 2007-05-18 10:20
かるあさん、返信ありがとうございます。

引用:

かるあさんの書き込み (2007-05-18 10:07) より:

これ ContentPlaceHolder の前に ScriptManager を移動したらどうなります?
コード:
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:contentplaceholder id="PageContentPlaceHolder" runat="server">
    </asp:contentplaceholder>





教えていただいた通り、ScriptManagerを前に移動したらできました!
なるほど〜。処理される順番に問題があったわけですね。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)