I am working on a railway web application and I have following layers:
ASP.NET MVC 2 (Presentation Layer)
Services Layer
Repository Layer
Database & External Web Services as data sources (Using Entity Framework for Database)
I pass Domain Entity Objects from Repository to Service layer and thinking of passing View Models from Service to Presentation layer. Website would require a login and after successful login I have to present a search screen with basic search (as default option) and option for advance search. Once user fills the search criteria I have to gather data from DB & Web Services and present the results to user. User would select a particular Rail option and would move on to other additional options page BUT they should be allowed to change their previously selected Rail option by going back to Rail search results. I have to always hold and present user’s initial search criteria (basic and advance search options selected by user on the search wizard) on every screen and need these criteria in Service and Repository layers.
What is the best way to hold these search criteria and pass them from page to page within presentation layer and across layers? Should I create a View Model class for Search Options? Or a Domain Entity Object (I don’t think so)? Or a DTO? and best way to pass it across layers and from page to page with in presentation layer.