2012-04-01 117 views
3

我剛剛開始使用ASP.NET - MVC 4構建一個網站,並且我試圖圍繞它的工作原理包裝我的頭。部分視圖控制器ASP.NET MVC

我想在每個頁面上顯示一些數據,並且已經瞭解部分視圖對此很有幫助。

是否有可能創建一個總是爲局部視圖提供數據的控制器?或者我該如何解決這個問題?

回答

8

這就是所謂的兒童行爲。

致電Html.Action(...)

+0

會生成額外的請求嗎? – johan 2012-04-01 19:43:43

+0

@johan:不。 – SLaks 2012-04-01 19:58:09

2

您可以爲局部視圖創建控制器操作。但是,如果你正在尋找的每一頁上inlcluding一些事情,你應該考慮加入,爲您的_Layout.cshtml頁面

您可以創建返回這樣

public ActionResult UserInfo() 
{ 
    UserViewModel objVm=GetUserInf(); 
    // do some stuff 

return View("PartialUserInfo",objVM); 

} 

的局部視圖正常的操作方法這將返回名稱爲「PartialUserInfo」目前的視圖,您Views/Users文件夾中(假設你的控制器名稱是用戶,如果要指定一個視圖這是一個不同的位置調用查看方法

returnView("Partial/UserInfo",objVm); 
的時候可以提到它0

這將在您的Views/Users/Partial文件夾中返回一個名爲「UserInfo」的視圖。

在你的局部視圖,您可以禁用正常佈局(如果有的話)由doint這個

@model UserViewModel 
@{ 
    Layout=null; 
} 
0

一種方法是對父視圖的模型(一個託管所有的諧音)它包含的屬性在其模型中的局部視圖模型

EX:

MainModel.ModelForPArtialView1 
MainModel.ModelForPArtialView2 
MainModel.ModelForPArtialView3 

這樣,你可以做到這一點父視圖

@Html.Partial("PartialView1",MainModel.ModelForPArtialView1) 
@Html.Partial("PartialView2",MainModel.ModelForPArtialView2) 
@Html.Partial("PartialView3",MainModel.ModelForPArtialView3) 
+0

解決方案還取決於視圖內容是否發生變化。所有父視圖中的部分內容是否完全相同? – TGH 2012-04-01 19:45:23