I'm using Entity Framework 4 and my model relationships are automatically generated from the lookup table. My models consist of Request
and Building
. A request can have many buildings, and a building can be associated with many requests. I've found a few posts on how DropDownFor automatically selects an item based on model relationships. But the HtmlHelper CheckBoxFor
wants an expression that returns bool. My models don't have a bool indicating checked because it is based on the relationship.
Anyone have tips or experience?
Don't pass your EF models to the view. Define view models which are classes specifically tailored to the needs of a given view. You don't need many-to-many recursive relations in the view. So in the case where you want to generate a checkbox you would have a corresponding boolean property on your view model. It's the controller that would query the repository, fetch the EF models, map them to the view model (this task could be simplified with frameworks such as AutoMapper) and finally pass the view model to the view so that in your view you simply:
@Html.CheckBoxFor(x => x.SomeBooleanProperty)
And if you wanted to have a list of checkboxes then your view model would contain a collection property of some type that will hold the boolean property.