Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is strongly-typed View in ASP.NET MVC

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

like image 367
Fraz Sundal Avatar asked May 24 '10 11:05

Fraz Sundal


People also ask

What is the strongly typed view in MVC?

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.

What is strongly typed and loosely typed in MVC?

In ASP.NET MVC, we can pass the data from the controller action method to a view in many different ways like ViewBag, ViewData, TempData and strongly typed model object. If we pass the data to a View using ViewBag, TempData, or ViewData, then that view becomes a loosely typed view.

What is the difference between strongly typed view and dynamic view in MVC?

The difference is that a dynamic view won't enforce compile-time type-checking (binding to properties etc). You can name and bind any property you want. At run time, if it can't find it in the model, that's when you'll get an error.


2 Answers

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).

like image 107
Darin Dimitrov Avatar answered Sep 23 '22 00:09

Darin Dimitrov


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.

like image 23
jco Avatar answered Sep 21 '22 00:09

jco