我可以使用主頁中的更新面板來包裝嵌套頁面,以便從一個頁面瀏覽到另一個客戶端時僅獲得部分刷新(MasterPage不會重新加載)。我可以在MasterPage中使用UpdatePanel來包裝嵌套頁面嗎?
如果是這樣 - 如何?我是否只需在主頁面上圍繞ContentPlaceholder
更新面板?
任何幫助表示讚賞!
我可以使用主頁中的更新面板來包裝嵌套頁面,以便從一個頁面瀏覽到另一個客戶端時僅獲得部分刷新(MasterPage不會重新加載)。我可以在MasterPage中使用UpdatePanel來包裝嵌套頁面嗎?
如果是這樣 - 如何?我是否只需在主頁面上圍繞ContentPlaceholder
更新面板?
任何幫助表示讚賞!
我勸你不要在UpdatePanel
包裝的整個頁面,其原因如下:
如果您希望您的網站被搜索引擎索引,你將需要顯示你的內容在單獨的頁面上 ...只在每個內容部分有不同的查詢字符串就足夠了。這是因爲對於搜索引擎內容爲國王,由於搜索引擎目前無法爲動態生成的數據編制索引,因此他們將無法爲您的網頁編制索引。
封裝在一個Update Panel
整個頁面是因爲,被髮送到服務器的巨大的開銷非常危險。如果你這樣做,你會看到顯着的性能下降。閱讀this article對由於這種巨大的開銷的主題
更多信息,建議使用網站的Update Panel
到更新只是小部分(像小框控件就在旁邊,等...)而不是整個內容部分。
在更新面板中包裝內容部分意味着您必須自己動手更改網址(使用#錨點)來動態更改網址,這樣您才能讓用戶使用後退按鈕在他們的瀏覽器上轉到網站的上一部分。 不必回去頁面的能力是用戶
非常討厭這裏是一個與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
做了部分回發按鈕被按下時, (注意巨大的開銷參與):
alt text http://encosia.com/blog/media/images/updatepanel-payload-response-sm.png
正如你所看到的,服務器基本上將所有那些在UpdatePanel
返回給客戶端的元素。
在另一方面,這裏要說的是涉及使用ASP.Net Page Methods一個例子。注意從服務器這次發送的響應(沒有UpdatePanel的參與):
alt text http://encosia.com/blog/media/images/json-payload-response.png
是有道理的 - 感謝 – JohnIdol 2008-12-13 13:06:37