41

What is strongly-typed View in ASP.NET MVC?

abatishchev
  • 98,240
  • 88
  • 296
  • 433
Fraz Sundal
  • 10,288
  • 22
  • 81
  • 132

3 Answers3

34

It is an aspx page that derives from System.Web.Mvc.ViewPage<TModel>. It is said that this view is strongly typed to the type TModel. As a consequence to this there's a Model property inside this view which is of type TModel and allows you to directly access properties of the model like this:

<%= Model.Name %>
<%= Model.Age %>

where as if your aspx page derived from System.Web.Mvc.ViewPage you would need to pull values from ViewData the view no longer knows about the TModel type:

<%= (string)ViewData["Name"] %>
<%= (int)ViewData["Age"] %>

or even worse:

<%= ((SomeModelType)ViewData["model"]).Name %>

and there's no compile time safety in such code.

Notice also that there's the ViewUserControl<TModel> counterpart for strongly typed partials (ASCX).

Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928
12

Strongly typed views are used for rendering specific types of model objects, instead of using the general ViewData structure. By specifying the type of data, you get access to IntelliSense for the model class.

jco
  • 1,335
  • 3
  • 17
  • 29
  • what if the View uses the fields or properties of multiple Model Classes? – Abid Ali Dec 26 '12 at 14:26
  • 2
    @AbidAli Make a seperate "view model" whose members are instances of the multiple model classes. For example, if you have `ModelA`, `ModelB`, and `ModelC`, then you'd have a view model that is: `public class MyViewModel { public ModelA ModelA { get; set; } public ModelB ModelB { get; set; } public ModelC ModelC { get; set; }}`. – Aaron Blenkush Jun 21 '13 at 19:12
3

It's a view which specifies the type of the object passed to it as its model - so instead of a view that inherits from ViewPage, it inherits from ViewPage<T> where T is the type of the model.

David M
  • 71,481
  • 13
  • 158
  • 186