For a couple of days now I’ve been trying to “ModelBind” a more complex model (based on the Entity framework) to a controller action. The problems I’ve been having are mostly related to the amount of code for this task. I’m therefore thinking of ways to reduce the complexity. The main problem is that it’s not directly possible to bind to ordinary EF/LS-graphs.
Separate object graph. One solution could be to have a separate object graph for use in with the view. That seems more than wasteful since we want to edit everything on this page and thus end up having to maintain extra objects when we have the EF/LS ones.
A revised binding to the EF/LS objects. If my model-binder treated the EF/LS objects in the correct manner then my problems would be solved. Problem is though that I need connected objects in the binding. That implies a UpdateModel pattern with the object context visible from the controller. Not a beautiful solution though.
I’ve written a small asp.net mvc application with a simple (complex model). I’ve a main entity Smurf. The Smurf entity has several SmurfChild records related to it:
The model binding I’m trying to do is the following:
public ActionResult EditAll_CustomBinder(
[ModelBinder(typeof(SmurfListBinder))]
IList<Smurf> smurfs
)
I’m editing a list of smurfs and the related smurf children in the view.
Do you want to send a comment or give me a hint about any issues with a blog post: Open up an issue on GitHub.
Do you want to fix an error or add a comment published on the blog? You can do a fork of this post and do a pull request on github.
Comments