2013-06-28 71 views
0

我是ASP.NET新手& MVC(不是編程雖然)。觀看視頻並加快速度。我主要來自桌面世界,所以我不是很熱衷於發佈帖子。自然然後我傾向於ajax。ASP.NET MVC嵌入視圖

在MVC中,似乎在我們的控制器中,我們通常會將視圖發佈回視圖(html頁面)。 我的問題是,我們是否可以將視圖嵌入到1個主視圖中?想法是每個請求將是一個控制器的ajax調用,它將找出它需要返回作爲HTML內容嵌入到現有頁面的視圖。由於所有酷視覺客戶端技巧,我們可以通過JavaScript返回的視圖做到,因此不需要回發和更流暢的用戶體驗。認爲變形,褪色,滑動等

作爲用戶,我想單擊一個鏈接,使頁面消失,然後淡入整個新的頁面。

我可能表現出我對這個空間的新鮮無知,但這似乎很有可能。

+1

檢出單頁面應用程序ASP.NET SPA。或者通常w會使用ajax來避免完整的回發。 –

+0

感謝您的指導。我聽到有人說,在返回HTML從ajax調用渲染時,問題很常見。也許SPA照顧這些問題。 – user441521

+1

水療中心正是你所描述的我所想的。 –

回答

2

首先,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窗體回發不一樣。

我希望這可以幫助你。

+0

糾正我,如果我錯了,但通常控制器的最終結果是顯示一個視圖,並顯示一個視圖的行爲發送一個新的頁面瀏覽器,這基本上是一個回發,即可見的加載頁瀏覽器。我想這就是我想說的/避免的。 – user441521

+0

請在答案中查看我的更新。我希望我幫助你更好地理解MVC。 –