We’ve been having a discussion at work about whether to use Domain Objects in our views (asp.net mvc 2) or should every view that requires data be sent a ViewModel?
I was wondering if anyone had any pros/cons on this subject that they could shed some light on?
Thank you
I like to segregate my Domain Objects from my Views. As far as I’m concerned, my Domain Objects are solely for the purpose of representing the Domain of the application, now how the application is displayed.
The presentation layer should not contain any domain logic. Everything they display should be pre-determined by their Controller. The ideal way to ensure this is always adhered to is to ensure the view only receives these flattened ViewModels.
I did ask a similar question myself. Here’s a quote from the answer I accepted:
If I have the domain objects for
Customer>Sales>Dispatch Address, then I don’t want to have to deal with the object traversal in my view. I create a flattened view model that contains all of the properties. There’s almost no extra work in mapping to and from this flattened view/presentation model if you use the excellent open source project AutoMapper.Also, why would you want to pass an entire domain object back to a view if you can create an optimised representation of that model?