Что такое Представление со строгим контролем типов в ASP.NET MVC?
Это страница aspx, производная от System.Web.Mvc.ViewPage
. Говорят, что это представление строго типизировано для типа TModel
. Как следствие этого есть свойство Model внутри этого представления, которое имеет тип TModel
и позволяет вам напрямую обращаться к свойствам модели следующим образом:
<%= Model.Name %>
<%= Model.Age %>
где, как если бы ваш aspx страница, полученная из System.Web.Mvc.ViewPage
, вам нужно будет извлечь значения из ViewData
, представление больше не знает о типе TModel
:
<%= (string)ViewData["Name"] %>
<%= (int)ViewData["Age"] %>
или еще хуже:
<%= ((SomeModelType)ViewData["model"]).Name %>
и в таком коде нет безопасности времени компиляции.
Обратите внимание, что существует аналог ViewUserControl
для строго типизированных партиалов (ASCX).
Это представление, которое определяет тип объекта, переданного ему в качестве модели, поэтому вместо представления, наследуемого от ViewPage
, оно наследуется от ViewPage
, где T
- тип модели.
Сильно типизированные представления используются для визуализации конкретных типов объектов модели, вместо использования общей структуры ViewData. Указав тип данных, вы получаете доступ к IntelliSense для класса модели.