7

マスターページの更新パネルを使用してネストされたページをラップし、あるページから別のクライアントを参照するときに部分的な更新のみが行われるようにすることはできますか (MasterPage はリロードされません)。

もしそうなら - どのように?ContentPlaceholderマスター ページの周りに更新パネルを配置するだけですか?

どんな助けでも大歓迎です!

4

1 に答える 1

15

UpdatePanel次の理由から、ページ全体を , で囲むことはお勧めしません。

  • サイトを検索エンジンのインデックスに登録したい場合は、コンテンツを別々のページに表示する必要があります...各コンテンツ セクションに異なるクエリ文字列を設定するだけで十分です。これは、検索エンジンにとってコンテンツは王様であり、検索エンジンは現在動的に生成されたデータをインデックス化できないため、ページをインデックス化できないためです。

  • ページ全体を でラップするUpdate Panelことは、サーバーに送信されるオーバーヘッドが非常に大きいため、非常に危険です。これを行うと、パフォーマンスが大幅に低下します。テーマの詳細については、この記事をお読みください

  • この巨大なオーバーヘッドのため、コンテンツ セクション全体ではなく、Web サイトの小さなセクション (側面の小さなボックス ウィジェットなど)のみUpdate Panel更新するために を使用することをお勧めします。

  • 更新パネルでコンテンツ セクションをラップするということは、(# アンカーを使用して) URL を手動で動的に変更する必要があることを意味します。これは、ユーザーがブラウザーの [戻る] ボタンを使用して移動できるようにするためです。サイトの前のセクションへ。 ページに戻る機能がないことは、ユーザーにとって非常に迷惑です


sの問題を示す例を次に示しUpdatePanelます。

以下は、ラベルとボタンを含む簡単な aspx ページのコードです。

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="up1">
 <ContentTemplate>
   <asp:Label runat="server" ID="Label1" Text="Update Me!" /><br />
   <asp:Button runat="server" ID="Button1" 
     Text="Postback Update" OnClick="Button1_Click" />
 </ContentTemplate>
</asp:UpdatePanel>

 

protected void Button1_Click(object sender, EventArgs e)
{
  Label1.Text = DateTime.Now.ToLongDateString();
}

UpdatePanel以下は、ボタンがクリックされたときに実行される部分的なポストバックです (膨大なオーバーヘッドが発生することに注意してください): (ソース: encosia.com )

                  代替テキスト

ご覧のとおり、サーバーは基本的に、UpdatePanel背後にあるすべての要素をクライアントに送信しています。


一方、ASP.Net Page Methodsを使用する例を次に示します。今回はサーバーから送信された応答に注目してください ( UpdatePanels は関係ありません)。

                    代替テキスト
(ソース: encosia.com )

于 2008-12-13T13:02:18.990 に答える