Asp.net

我可以在 MasterPage 中使用 UpdatePanel 來包裝嵌套頁面嗎?

  • February 23, 2019

我是否可以在 masterpage 中使用更新面板來包裝嵌套頁面,以便從一個頁面瀏覽到另一個客戶端時僅獲得部分刷新(MasterPage 不會重新載入)。

如果是這樣 - 如何?我只是ContentPlaceholder在母版頁中放置一個更新面板嗎?

任何幫助表示讚賞!

我不建議您將整個頁麵包裝在 中UpdatePanel,原因如下:

  • 如果您希望您的網站被搜尋引擎索引,您將需要在單獨的頁面上顯示您的內容……只需在每個內容部分使用不同的查詢字元串就足夠了。這是因為對於搜尋引擎而言,內容為王,而且由於搜尋引擎目前無法索引動態生成的數據,他們將無法索引您的頁面。
  • 將整個頁麵包裝在一個Update Panel中是非常危險的,因為發送到伺服器的成本很大。如果這樣做,您將看到性能顯著下降。閱讀本文以獲取有關該主題的更多資訊
  • 由於這個巨大的成本,建議使用Update Panel更新網站的一小部分(如側面的小框小元件等……)而不是整個內容部分。
  • 在更新面板中包裝內容部分意味著您將不得不自己手動動態更改 url(使用 # 錨點),這樣您就可以讓使用者能夠使用瀏覽器上的後退按鈕去到網站的上一部分。 無法返回頁面對使用者來說非常煩人

這是一個展示UpdatePanels 問題的範例。

以下是帶有標籤和按鈕的簡單 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 頁面方法的範例。注意這次從伺服器發送的響應(不涉及更新面板):

                    替代文字

(來源:encosia.com

引用自:https://stackoverflow.com/questions/365183