So, what are we going to do?
This is quite exciting. I am starting fairly new to MVC/Razor and hopefully my journey will resonate with some of yours.
This is the first in a series of posts that I have planned. In this post I will describe the various concepts and areas that I wish to explore as the online storefront application gets developed.
In no particular order, here are some of the concepts that we shall explore.
Model driven data validation (DRY – ‘Don’t Repeat Yourself – concept)
Data Annotation validation is quite powerful. By using the Data Annotation Model Binder, you can provide data validation
at the model level that is reflected in all views that are constructed using that model or derived from that model.
Morover, using the MetaDataType attribute, you can include validation support at the Entity Framework level.
Using the ViewModel
Using ViewModel, we will be extending the underlying model to provide richer support of the model to the view.
Using filter driven support for security
We will be using filters to provide membership support. We will also be looking at the default membership provider to provide support for authentication.
Using templates for views
We will use templates to provide a consistent look and feel to the site. We will explore the flexibility offered by Razor
in rendering sections of the template and the default section for the main content.
Using strongly typed Html Helpers
Using these helpers, we will achieve better type safety at build time and get the benefit of compile time checking of the view for errors.
Using Entitiy Framework as the base Model
Using EF, we will be able to quickly bring in our base database model into our application at the Model layer.
Using Webgrid with sorting and pagination support
We will use the WebMatrix webgrid to provide for a grid representation of the model with support for pagination and sorting of columns.
Providing for Localization
We will look to provide localization for labels and system messages including validation messages. The intent is not to translate or localize user submitted data.