2012-03-29 78 views
0

直到現在在C#MVC3我只需要使用一個控制器,只使用一個模型。控制器使用多個模型?

但現在我想我需要訪問我的控制器中的兩個模型。我想知道這是否允許在MVC模式?

我有一個ProfileController。 ProfileController顯然顯示用戶的配置文件信息。但也有一些我希望展示的數據,如用戶創建的組。爲此,我也有一個GroupsModel。

我該如何從一個控制器獲取兩個數據?

回答

3

我該如何從一個控制器獲取兩個數據?

通過使用視圖模型:

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) 
+0

+1這是我通常採用的方法。 – James 2012-03-29 08:40:43

+0

謝謝,很好的解釋。只是我想確定一件事。我可以把這個ViewModel放入「Models」文件夾嗎?還是創建一個名爲「ViewModels」的單獨文件夾更好? – w00 2012-03-29 08:58:25

+0

@ w00 - 在這方面完全取決於您,我個人傾向於將所有模型保留在同一個文件夾中(與視圖/數據無關)。除非有必要分開例如分層架構。 – James 2012-03-29 09:01:48

1

假設您沒有在單個視圖/控制器中插入太多內容,爲什麼不編寫一個包含所需數據的簡單視圖模型?

public class ProfileInfo 
{ 
    public Person Person 
    { 
     get; 
     set; 
    } 

    public List<Group> Groups 
    { 
     get; 
     set; 
    } 
} 
相關問題