回答
我無法從你的控制器將數據傳遞到強調不夠用的ViewModels的重要性視圖。正如你的問題所述,你已經這樣做了,這是一個很好的開始!
所以..這就是我該怎麼做的。
public class IndexViewModel // or DetailsViewModel or whatever the Action Method is
{
public IEnumerable<Foo> Foos { get; set; }
public SelectList DropDownBox { get; set; }
public string Name { get; set; } // Textbox 1
public string Description { get; set; } // Textbox 2
}
好的。所以讓我們看看我做了什麼。
我已經通過了View
要求的所有信息。沒有更多,沒有更多。只是-exact-信息。
Foos
是foo
的列表,然後您可以循環顯示。 (專業小貼士:使用DisplayTemplates渲染自定義類型/自定義類型的集合)。
我也建議在傳遞SelectList
這是下拉內容等。有些人不喜歡這(這是很好)。相反,他們傳遞他們的項目集合在下拉列表中呈現,但我個人覺得這太漏洞了。我們有ViewModels
的關鍵原因是我們可以測試這些東西。
最後,每個文本框都有一個屬性。
所以總之,我把所有的信息放在一個ViewModel
。該視圖模型可以包含其他類(通過屬性公開)。但是是的 - 你想要一個VIEWMODEL PER VIEW。
HTH :)
那麼從我已經完成的項目中,我會建議將所有信息保存在一個類中,但這一切都取決於數據,正如Idan Arye所述,您正在使用。從你所問的我會建議看一下MSDN,這是C#的好資源。希望這有助於
這取決於有多大將是你的模型,但是是你可以讓他們在一個班
對於例如如果像Employee一樣簡單,如下所示,然後將其保留在一個類中。但是,如果更大然後這個和它的3倍-4具有更爲複雜的數據字段然後嘗試讓他們在不同的班級
public class EmployeeController : Controller
{
public ActionResult Index()
{
var employeeModel = new Employee
{
FirstName = "Hat",
LastName = "Soft",
Departments = new BindingList<SelectListItem>
{
new SelectListItem {Text = "Accounts", Value = "1"},
new SelectListItem {Text = "Human Resource", Value = "2"},
new SelectListItem {Text = "Operations", Value = "3"}
}
};
return View(employeeModel);
}
}
也許你實際上是在問我應該使用視圖模型?
到類似... Should I use a view model for just two objects?
恕我直言視圖模型與MVC和剃刀工作時往往是一個不錯的選擇。
最終取決於你,決定取決於你的模型和其他因素。例如,如果視圖所需的位最終來源於模型中的不同實體,那麼可能會認爲答案是肯定的,並且應考慮使用視圖模型,因爲可以根據您的視圖對單個視圖模型進行定製。
基本查看模型可以幫助保持您的意見清潔。通常考慮的主要含義是映射域實體查看模型和其他方式(例如在GET或POST期間)所需的必然映射邏輯。 AutoMapper是一個可以用來減少映射代碼的庫的示例。根據我的經驗,只要您的映射邏輯不是非常複雜,就可以很好地工作。
在我看來,取決於頁面是什麼,如果你要顯示的域對象的屬性,在這種情況下,你應該考慮有一個特殊的對象的視圖(如視圖模型)你的類將域的對象類(例如用戶)和某些時候你的視圖模型(例如UserViewModel)。
當然,您也可以使用Value Objects/DTO來攜帶複合對象,因此,您必須創建與域無關但仍然需要在您的系統中傳輸數據的通信類DAL給你的意見。
最後,您將始終需要一個視圖模型類,它將與域對象或自定義的DTO /值對象相對應,以在視圖中顯示數據。
希望這會有所幫助。
- 1. MVVM ViewModel與MVC ViewModel
- 2. MVC - ViewModel
- 3. mvvm viewmodel vs asp.net mvc viewmodel
- 4. ViewModel MVC 3
- 5. MVC 4 _Layout.cshtml viewmodel
- 6. MVC ViewModel錯誤
- 7. C#MVC:返回ViewModel或模型類?
- 8. ASP.net MVC DropDownListFor或DropDownList與強類型ViewModel
- 9. MVC ViewModel EntityFrameWork ICollection,IEnumerable虛擬類
- 10. 把ViewModel類放在MVC的地方
- 11. MVC,在哪裏生成ViewModel類?
- 12. 在ASP.NET MVC ViewModel類中獲取數據?
- 13. ViewModel MVC下拉/ SelectListItem MVC
- 14. jQuery Validator.showErrors MVC ViewModel ModelState
- 15. MVC ViewModel不回發
- 16. MVC index model with viewmodel
- 17. MVC ViewModel返回ArgumentNullException
- 18. .NET核心MVC ViewModel
- 19. MVC 3 viewmodel屬性
- 20. jQGrid和MVC 3.0 ViewModel
- 21. Kendo grid mvc with viewmodel
- 22. ASP.NET MVC ViewModel關注
- 23. mvc模型和viewmodel?
- 24. MVC ViewModel不回發
- 25. ASP.NET MVC ViewModel路徑
- 26. MVC Viewmodel TDD方法
- 27. ASP.NET MVC ViewModel更新
- 28. ASP.NET MVC Viewmodel麻煩
- 29. MVC ViewModel - 多個模型
- 30. MVC - 驗證(Model.State)使用ViewModel
這真的取決於數據是什麼。如果所有組件中的數據是密切相關的 - 例如,對於同一領域的不同子領域 - 比是肯定的,最好將它們全部放在一個班級中。 – 2012-07-06 21:47:11