2016-07-28 73 views
-2

我期望我的web應用程序的行爲類似於「單頁應用程序」,因爲整個屏幕在每個頁面加載之間不會變白,而只是渲染新的部分對每個請求執行整頁重新加載的ASP.NET應用程序

<div id="mainSection"> 
    <!-- Render individual pages --> 
    @RenderBody() 
</div> 

和我_Layout.cshtml頁面上的鏈接:頁面爲每

<li>@Html.ActionLink("Some Page", "Index", "Page")</li> 

現在的另一點是,應用程序似乎只在Firefox中正常運行。應用程序不會在Firefox中執行完整頁面重新加載,但在Chrome或IE中執行。該應用程序正在IIS上運行。

+0

不知道你的意思是「新的部分」。你發送什麼樣的請求? – itsme86

+1

我看到你可以混淆部分和渲染方法只更新頁面的部分。但是,您需要使用Ajax調用來更新特定的部分,而無需重新加載整個頁面。搜索「ASP.NET MVC Ajax」,你會發現很多關於如何實現部分頁面加載和其他內容的文章和演練。 – hankide

回答

3

@Html.ActionLink僅僅是創建了一個URL鏈接到一個特定的控制器和行動的輔助方法(這樣你就不必硬編碼的網址隨處可見。)

它產生一個鏈接,這很像任何其他:

<a href="/Page/Index">Some page</a> 

因此,預計點擊它應該在瀏覽器中加載該頁面,即使它是您已經在的頁面。 (如果你點擊一遍又一遍的stackoverflow徽標 - 它會繼續重新加載相同的頁面。)

有什麼特別的是,它是而不是在Firefox中重新加載。你確定它不只是加載速度很快?


當你的觀點一個使用佈局,@RenderBody()在佈局告訴它在何處渲染布局內的視圖。這只是指定你的頁面如何適應佈局,但並不意味着只有那部分將要重新加載。


嘗試this link爲你實際上想要做的。

  • 在JavaScript中,使調用Ajax控制器
  • 控制器渲染的局部視圖(不帶佈局的視圖),並返回HTML作爲Ajax調用的結果
  • 你的JavaScript得到結果的Ajax調用,並用新的HTML代替<div>的內容。

這樣頁面永不刷新,而只是其中一部分被更新。

然後有像AngularJs這樣的各種JavaScript庫可以爲你自動化。但我建議讓自己的第一個測試案例工作,以便在看到其他事情之前看看它是如何發生的。

+0

是的,Firefox的行爲如預期。它不會重新加載標題,導航欄或頁腳,只是頁面的內部部分。 – x540

相關問題