直到現在在C#MVC3我只需要使用一個控制器,只使用一個模型。控制器使用多個模型?
但現在我想我需要訪問我的控制器中的兩個模型。我想知道這是否允許在MVC模式?
我有一個ProfileController。 ProfileController顯然顯示用戶的配置文件信息。但也有一些我希望展示的數據,如用戶創建的組。爲此,我也有一個GroupsModel。
我該如何從一個控制器獲取兩個數據?
直到現在在C#MVC3我只需要使用一個控制器,只使用一個模型。控制器使用多個模型?
但現在我想我需要訪問我的控制器中的兩個模型。我想知道這是否允許在MVC模式?
我有一個ProfileController。 ProfileController顯然顯示用戶的配置文件信息。但也有一些我希望展示的數據,如用戶創建的組。爲此,我也有一個GroupsModel。
我該如何從一個控制器獲取兩個數據?
我該如何從一個控制器獲取兩個數據?
通過使用視圖模型:
public class MyViewModel
{
public ProfileModel Profile { get; set; }
public GroupsModel Groups { get; set; }
}
,然後通過這個視圖模型到視圖:
public ActionResult ShowProfile()
{
var model = new MyViewModel();
model.Profile = ...
model.Groups = ...
return View(model);
}
現在你的觀點會被強類型的視圖模型:
您可以顯示信息:@Html.DisplayFor(x => x.Profile.SomeProperty)
假設您沒有在單個視圖/控制器中插入太多內容,爲什麼不編寫一個包含所需數據的簡單視圖模型?
public class ProfileInfo
{
public Person Person
{
get;
set;
}
public List<Group> Groups
{
get;
set;
}
}
+1這是我通常採用的方法。 – James 2012-03-29 08:40:43
謝謝,很好的解釋。只是我想確定一件事。我可以把這個ViewModel放入「Models」文件夾嗎?還是創建一個名爲「ViewModels」的單獨文件夾更好? – w00 2012-03-29 08:58:25
@ w00 - 在這方面完全取決於您,我個人傾向於將所有模型保留在同一個文件夾中(與視圖/數據無關)。除非有必要分開例如分層架構。 – James 2012-03-29 09:01:48