2015-05-07 35 views
0

我剛剛完成了我的第一個網站(ASP.NET)的工作。我想要的只是頂部的一些簡單的導航菜單和底部的內容。首先,我開始使用MasterPages,但我不希望整個頁面在頁面之間瀏覽時刷新,並且使用MasterPages似乎無法實現。 所以我切換到iframes - 所有看起來不錯,但我不能書籤或訪問子頁面。將網站從iframe重寫爲AJAX

我願意重新寫入網頁,但我不確定使用哪種技術。我應該嘗試AJAX的asp.net?我在網上找到的教程中,他們總是隻更新幾個字符串,從來沒有整個頁面的圖像,文字等。我必須把所有頁面的html代碼放到一個大文件中有很多面板,或者它有可能保持分離的aspx文件?還是有其他一些我忽略的方法? 所有我想要的是一個網站的菜單,不會重新加載所有的時間和可能性導航到子頁面。爲了更好地理解,我的當前頁是www.caucasus-trekking.com

謝謝你,約瑟夫

+0

爲什麼您不希望瀏覽器從一個頁面導航到另一個? AJAX不是一個魔術棒,它是一個特定的工具,它可以完成特定的任務。使用任何工具都有優點和缺點。 – David

+0

我想避免整個頁面的刷新。另外我想在一個地方提供所有菜單相關的內容。我對網站設計不太熟悉,但恐怕有單獨的頁面會導致很多冗餘的hmtl代碼。 – Jozef

+1

那麼,如果您切換到其他方法,並且不要修改瀏覽器網址,您仍然無法爲特定頁面添加書籤。 我認爲你試圖違背正常的網頁導航。 爲什麼你想避免頁面重新加載 - 它是否使你需要解決一些問題? – Dusan

回答

0

對我來說,最好的方法是切換到Asp.Net MVC,因爲標準的Web表單不提供您需要的靈活性,可能非常棘手。

這裏是你如何能做到這一點使用MVC:

  1. 作出頁面的控制器和視圖。
  2. 使用_Layout.cshtml作爲標題,導航...(而不是母版頁)。
  3. 在導航鏈接上,將常規href值以正常標準方式導航到特定頁面。
  4. 到目前爲止,這只是一個標準的常規網站。
  5. 現在,在導航鏈接上,附加使用Ajax和URL從href加載服務器內容的單擊處理程序。將這個加載的內容放入內容div中。
  6. 在服務器上,在控制器操作內部,針對正常請求返回View,針對ajax請求返回PartialView
  7. 另外,使用其中一些方法修改瀏覽器URL。 Modify the URL without reloading the page
  8. 最後,你會得到部分頁面重新加載,訪問者可以收藏 頁面,您的內容對搜索引擎可見。雙贏。
0

如果你真的想保持頁眉/頁腳,那麼你也許想要一個單頁的應用程序(SPA),與AngularJS爲實例,但它需要重寫幾千行代碼,因爲你改變了「哲學」。 SPA on Wikipedia

目前最簡單的解決方案應該是AJAX調用只刷新身體,但對於一個複雜的網站,我沒有推薦它。你必須寫您加載您在jQuery的調用槽控制器,通過使用AJAX功能的_YourPage.cshtml,例如:

$.ajax({ 
        url: "@Url.Action("Search", "Home")", 
        cache: false, 
        type: "GET", 
        dataType: "html", 
        traditional: true, 
        data: { 
         page: // Your page id found in the a href thanks to data-*? 
        }, 
        success: function (result) { 
         // replace the body 
        } 
       }); 

我們以前用的母版,你以前做過,或單頁面應用