2010-04-21 127 views
7

我使用的母版頁在我的ASP.net應用,在母版頁我把更新的ContentPlaceHolder面板中,支持AJAX的子頁面,問題是如何停止更新「母版頁控制」,而網頁間導航?在瀏覽頁面時停止母版頁刷新?

對於頁面之間的導航我試圖用的Response.Redirectwindows.location Java腳本沒有成功,我將使用框架或iFrame而不是母版頁停止更新?

任何建議來解決這個問題,將不勝感激,在此先感謝...

回答

5

如果您不想在網頁「頁面」之間切換時刷新你,你會不會使用母版頁什麼好的解決辦法。正如其他人用不同的話來說,主頁面只是一個普通的「模板」,由不同的頁面使用。之間的導航就像調用不同的頁面一樣,當然會重新加載整個頁面,包括主頁面內容。

  1. 我曾與阿賈克斯使用的sollution是 讓每個「頁」作爲用戶 控制,並把他們都在 的UpdatePanel與visible="false"。 然後,爲了在「頁面」之間導航,切換 用戶控件 的可見性以顯示正確的「頁面」控件。

  2. 另一種方法是使用iframe。

這兩種解決方案都不使用MasterPage。

MasterPage概念旨在簡化在ASP.NET中引入Ajax之前的常見外觀。 Ajax流行後,不刷新整個頁面的需求更爲普遍。

+0

感謝您的博文,我嘗試了第一個解決方案,而不是將所有控件放在頁面中,而不是我在運行時創建控件,這更快更好,:(最終我轉回到Frames,因爲很多問題發生在Java Script代碼中,現在Frames爲你解決了這個問題,謝謝大家。 – 2010-04-30 21:39:38

1

擁有一個像你解釋了一個結構:

    • 子頁面1
    • 兒童頁2
    • ...

那麼你就不能當你從第1頁切換到第2頁等,爲你有一個單一的「頁面」實體(主內容+選定的頁面內容)時,它呈現給瀏覽器阻止該網頁刷新。

如果你想在同一個頁面內切換不同的應用視圖(所以爲了防止整個頁面刷新),你可以使用一個單獨的頁面(Master變得毫無用處),在其中加載不同視圖的updatePanel 。

您也可以使用iframe,但如果你要處理任何類型的頁面的不同部分(其中一些是在iframe內)之間的通信的我個人的意見並不使用它們。

+0

謝謝,我如何使用不同的視圖UpdatePanel?你能解釋一下嗎? – 2010-04-21 08:03:50

+0

例如,你可以使用Tabs控件。 http://www.asp.net/ajax/ajaxcontroltoolkit/samples/tabs/tabs.aspx 但它取決於您要完成的效果以及應用程序的可視佈局。 – mamoo 2010-04-21 08:09:21

2

一個母版只不過是延伸你的「正常」的網頁(大部分時間)應用程序的默認佈局多。母版頁和contentplaceholder呈現爲完整的html頁面。在頁面之間導航時,整個頁面刷新的正常行爲。這就是網絡的工作原理。

使用iframe可以解決您的問題。然而,這有一些其他的副作用:

  1. 整個主頁不再有用。 iframe中的內容是「主頁」。

  2. 隨着你居然瀏覽到另一個URL一個母版,還可以看到在瀏覽器的地址欄。當您使用iframe時,您可以在iframe中導航到另一個頁面。瀏覽器中的網址將保持不變。當你的應用程序的用戶點擊刷新按鈕時,它總是在你分配給你的iframe的默認頁面重新開始。當然有一些解決方法

無論如何。這真的取決於你的應用程序。有多種解決方案可以解決刷新行爲。

+0

謝謝,實際上我通過使用框架解決了令人耳目一新的問題,但我正在尋找解決此問題的另一種方法,想象您左側的導航欄和頁面右側的導航欄,點擊NavBar中的任何項目不會回傳空洞頁面。 – 2010-04-21 08:07:47

+0

這不是回傳。您只需請求另一個url,服務器就會返回一大堆瀏覽器呈現的html。在整個清新過程中,你最大的問題/關注點是什麼? – Joop 2010-04-21 08:59:17

+0

重新加載徽標和導航欄和頁腳,導致網站速度慢的問題,需要儘可能使網站成爲windows應用程序,而這完全不依賴於Ajax支持。 – 2010-04-21 11:43:03

相關問題