使用MVC3,我应该设计我的视图模型,以便有一个绑定到视图(DisplayModel)和一个发布回控制器(EditModel)?
为了澄清,我不是问数据模型与视图模型 – 我知道将我的视图/控制器绑定到数据/域模型是不好的。
我也不是要求分两个视图共享一个模型,一个用于显示数据的视图,另一个用于编辑数据的视图。
相反,我询问一个用于编辑数据的视图,以及绑定到视图的模型与绑定到控制器动作的模型。
换句话说,如果这是我的观点:
@model MyApp.Models.CustomerModel
我的控制器操作应该如下所示:
public ActionResult Index(CustomerModel model)
要么:
public ActionResult Index(CustomerEditModel model)
有一点,我们正在做后者(分开)。但最近,我们已经开始做前者(共享)了。
这种变化的原因是因为:
>如果我使用MVC3进行验证,如果我使用DataAnnotations对我的模型进行验证,如果两者都是分开的(在显示模型上映射客户端验证,并且在服务器端验证的编辑模型上) )。
>随着我们的应用成熟,我们意识到我们的显示和编辑模型是95%完全相同的,除了我们的视图模型中的选择列表。现在我们已经将它们移动到了shared class,并且现在通过这个视图传递了这些。
但是我已经看到一些其他的讨论,指出共享模型视图/控制器是一个坏主意,和it violates分离的关注。
有人能帮我理解这两种方法的权衡吗?