Asp.net mvc 3 多对多复选框和mvc

Asp.net mvc 3 多对多复选框和mvc,asp.net-mvc-3,entity-framework-4,many-to-many,Asp.net Mvc 3,Entity Framework 4,Many To Many,我使用的是EntityFramework4,我的模型关系是从查找表自动生成的。我的模型包括请求和建筑。一个请求可以有多个建筑物,并且一个建筑物可以与多个请求关联。我发现了一些关于DropDownFor如何根据模型关系自动选择项目的帖子。但是HtmlHelperCheckBoxFor需要一个返回bool的表达式。我的模型没有bool指示,因为它基于关系 有人有提示或经验吗?不要将您的EF模型传递给视图。定义视图模型,这些模型是专门为给定视图的需要而定制的类。视图中不需要多对多递归关系。因此,如果要

我使用的是EntityFramework4,我的模型关系是从查找表自动生成的。我的模型包括
请求
建筑
。一个请求可以有多个建筑物,并且一个建筑物可以与多个请求关联。我发现了一些关于DropDownFor如何根据模型关系自动选择项目的帖子。但是HtmlHelper
CheckBoxFor
需要一个返回bool的表达式。我的模型没有bool指示,因为它基于关系


有人有提示或经验吗?

不要将您的EF模型传递给视图。定义视图模型,这些模型是专门为给定视图的需要而定制的类。视图中不需要多对多递归关系。因此,如果要生成复选框,则视图模型上会有相应的布尔属性。控制器将查询存储库,获取EF模型,将它们映射到视图模型(此任务可以通过诸如之类的框架简化),最后将视图模型传递到视图,以便在视图中您只需:

@Html.CheckBoxFor(x => x.SomeBooleanProperty)

如果您希望有一个复选框列表,那么视图模型将包含一个包含布尔属性的集合属性。

谢谢Darin!在这种情况下,我似乎无法从任何人那里得到关于是否需要viewmodel的答案。我有一个包含RequestDailyViewModel的AccessRequestViewModel。我让我的控制器创建AccessRequestViewModel,我正计划在其构造函数方法中设置映射,以在EF请求模型和我的应用程序的RequestDailyViewModel之间映射。您认为这应该严格在控制器中完成,还是对于复杂类型,可以从单个“父”视图模型中处理吗?@ryan:我有一个类似的挑战,我已经成功地按照Darin的建议填充了视图模型。但是,我无法将集合模型绑定回HttpPost操作方法——您有过类似的问题吗?你是否必须求助于定制的模型活页夹?我和Ryan有同样的问题,但是我对查看模型和C#足够新,所以我不理解提供的答案@Darin您是否有可能提供一些关于模型和控制器中的代码?