首先,MVC中沒有回傳的概念。這是一種將數據傳遞給服務器的Web窗體策略。控制器不會做任何回傳查看。你必須明白的是,控制器負責,可以說,準備信息。這些信息被傳遞給一個視圖,以View的方式呈現。控制器返回結果並說明應該使用哪個視圖以滿足用戶的請求。
用戶可以使用視圖中的表單向某個控制器中的操作提交數據。控制器接收信息,以特定方式處理信息並對其進行處理,如將其存儲在某個數據源中。這不是像Web表單一樣的回傳概念。
你在你的問題中描述的是一種SPA應用程序的工作方式,但你必須明白,即使在SPA應用程序中,視圖並不總是被預加載。這是真的,特別是如果你有一個大的應用程序。
通過Ajax下載視圖,實際上是部分視圖是完全正常的,所以它不是你應該不惜一切代價避免的東西。稍後,當您通過Ajax獲取視圖時,您可以應用jQuery過濾器和特殊效果。
更新:控制器返回操作結果。這些結果的基類,正如你我猜測ActionResult
。許多其他類從這個類繼承。例如,ViewResult
是最常用的並且是此答案的主題。您還有FileResult
用於返回文件,RedirectToRouteResult
執行重定向,等等。所有這些都是行動結果。在MVC中返回視圖意味着:「爲了向用戶顯示此數據,請使用此視圖或局部視圖。」當您請求(發出HTTP GET方法)時,控制器會爲您返回一個視圖,當您發佈數據(發佈HTTP POST方法)時,控制器將執行一些操作並可以執行重定向,之後通常會返回一個視圖,或者返回一個文件等。本質上不存在MVC回傳。例如,在Web窗體中,如果您單擊按鈕或更改AutoPostBack
設置爲true
的下拉框中的值,則啓動回發並將ViewState
發送到服務器。 MVC沒有這種機制來觸發回傳。您可以提交表單或使用Ajax執行GET請求以檢索信息,或者通過POST將數據作爲JSON提交回服務器。
因此,當您提出查看頁面的請求時,它不是回傳。當您將表單數據發佈到服務器時,它不是回發,它提交數據並且與Web窗體回發不一樣。
我希望這可以幫助你。
檢出單頁面應用程序ASP.NET SPA。或者通常w會使用ajax來避免完整的回發。 –
感謝您的指導。我聽到有人說,在返回HTML從ajax調用渲染時,問題很常見。也許SPA照顧這些問題。 – user441521
水療中心正是你所描述的我所想的。 –