回答
我无法从你的控制器将数据传递到强调不够用的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. MVC - ViewModel
- 2. MVC 4 _Layout.cshtml viewmodel
- 3. ViewModel MVC 3
- 4. 在ASP.NET MVC ViewModel类中获取数据?
- 5. C#MVC:返回ViewModel或模型类?
- 6. MVC,在哪里生成ViewModel类?
- 7. ASP.net MVC DropDownListFor或DropDownList与强类型ViewModel
- 8. ASP.NET MVC ViewModel更新
- 9. ASP.NET MVC Viewmodel麻烦
- 10. ASP.NET MVC ViewModel关注
- 11. MVC ViewModel不回发
- 12. MVC ViewModel返回ArgumentNullException
- 13. .NET核心MVC ViewModel
- 14. Kendo grid mvc with viewmodel
- 15. ASP.NET MVC 3 - ViewModel&Refresh - 问题
- 16. ASP.NET MVC 2 - ViewModel前缀
- 17. MVC自定义viewmodel问题
- 18. 间隔刷新viewmodel mvc
- 19. 在MVC中,什么是ViewModel?
- 20. ASP.NET MVC ViewModel自动生成
- 21. MVC中的ViewData和ViewModel ASP.NET
- 22. ASP.NET MVC 3 Viewmodel模式
- 23. ASP.NET MVC模型/ ViewModel验证
- 24. 使用ViewModel MVC验证
- 25. MVC ViewModel脚手架项目
- 26. ASP.Net MVC和jQuery DatePicker ViewModel
- 27. MVC viewmodel和linq查询
- 28. ASP.NET MVC模型vs ViewModel
- 29. ASP.NET MVC 3将类型KeyValuePair绑定到ViewModel的用户控件
- 30. Asp.net MVC 3和主页ViewModel和类别列表
这真的取决于数据是什么。如果所有组件中的数据是密切相关的 - 例如,对于同一领域的不同子领域 - 比是肯定的,最好将它们全部放在一个班级中。 – 2012-07-06 21:47:11