While on the topic of UI, I thought I'd also share a few
details about some of the View-related improvements that are coming with the
new ASP.NET MVC Release Candidate (RC) build that will be shipping
shortly. In addition to bug fixes, the release candidate incorporates a
number of view-specific feature additions and community suggestions.
Views without Code-Behind Files
Based on feedback from a lot of people, we've decided to
make a change so that MVC view files by default do not have code-behind files.
This change helps to reinforce the purpose of views in a MVC world (which are
intended to be purely about rendering and to not contain any non-rendering
related code), and for most people eliminates unused files in the project:
Figure 2

With the ASP.NET MVC Beta, developers could eliminate the
code-behind file by using the CLR syntax for generic types in a view's inherits attribute,
but that CLR syntax is (to put it mildly) pretty undiscoverable and hard to
use. The ASP.NET MVC team was able to combine a few extensibility
features already in ASP.NET to now enable the standard VB/C# language syntax
within the inherits attribute with the ASP.NET RC build:
Figure 3

One other nice benefit of not using a code-behind file is
that you'll now get immediate intellisense when you first add them to the
project. With the beta you had to do a build/compile immediately after
creating a view in order to get code intellisense within it. The RC makes
the workflow of adding and immediately editing a view compile-free and much
more seamless.
Top-Level Model Property on Views
With previous builds of ASP.NET MVC, you accessed the
strongly typed model object passed to the view using the ViewData.Model
property:
Figure 4

The above syntax still works, although now there is also a
top-level "Model" property on ViewPage that you can use:
Figure 5

This property does the same thing as the previous code
sample - its main benefit is that it allows you to write the code a little more
concisely.
HTML/AJAX Helpers Now Enable Expression Syntax
One of the requests a few people have asked
for is the ability to use strongly-typed expression syntax (instead of using
strings) when referring to the Model when using a View's HTML and AJAX helper
objects.
With the beta build of ASP.NET MVC this wasn't
possible, since the HtmlHelper and AjaxHelper helper classes didn't expose the
model type in their signature, and so people had to build helper methods
directly off of the ViewPage<TModel> base class in order to achieve
this. The ASP.NET MVC RC build introduces new HtmlHelper<TModel>
and AjaxHelper<TModel> types that are exposed on the
ViewPage<TModel> base class. These types now allow anyone to build
strongly-typed HTML and AJAX helper extensions that use expression syntax to
refer to the View's model.
For example, I could build a (very simple)
strongly-typed "TextBox" helper method using the code below:
Figure 6

And then use it within any of my views to bind against a
Product model object like so:
Figure 7

Visual Studio will provide full intellisense for the
strongly-typed expression syntax when working against the View's model in the
source editor in this way:
Figure 8
Note: the HTML helper extensions in the core ASP.NET MVC V1
assembly will still use the existing (non-expression based) syntax. We
are then planning to add expression-based versions to the MVCFutures assembly.
You can of course also add your own helper methods (using either strings or
strongly-typed expressions). All of the built-in helper methods can also
optionally be removed (because they are extension methods) if you want to
replace or override them with your own.