I’m really new to both ASP.NET MVC and the MVC pattern generally.
For context, I’m currently running .NET 4.0, MVC 2.
I know that MCV 2 has a bunch of built in features for:
-
validation (both client and server side, through a variety of ways)
-
error handling (via attributes and other methods)
But what should be used to return feedback to the user that is neither an error nor validation?
For example, I have a simple form that returns a csv (using myController.base.file()) IF data is found.
If data is not found, I’d like to return the View with the Model as-is plus a message, like, “no data found, try a different date range”
Now,
should that kind of feedback message be stored in the model itself?, or
is there a cleaner mechanism for this?
Is that what the ModelStateDictionary is for?
UPDATE
just to clarify. I know there may be many ways to do what I want, but what’s the correct MVC way of doing it.
Keep in mind the feedback data is not an error, and I don’t want to redirect to some other view.
I think what might clear the air is the idea of a ViewModel. Except for the most simple scenarios, you’ll find more than one kind of model in your project. They can go by many names, but I find these names helpful:
Pure domain models (Models)
This is where you have your ideal representations of our data model.
Application models (ViewModels)
These models account for the realities of displaying your domain model in a view. They contain data specifically needed for a specific view. It’s perfectly acceptable to put something like a status message in this kind of a model.
I would recommend this insightful blog post which shows when, why and how to use ViewModels.
Example: