@model
декларации в верхней части ваше представление связано с объектом модели, который вы передали методу View()
в вашем контроллере (вариант 1 в вашем вопросе). Объявление @model
- это ваш способ сообщить движку просмотра Razor, что вид строго типизирован. Это означает, что компилятор C# может дважды проверять любые свойства ваших просмотров.
Предположим, вы имели следующий класс
public class MyModel
{
public string Name { get; set; }
}
Без сильно типизированной вы могли бы иметь что-то вроде этого, на ваш взгляд
<div>
Hello, @Model.Nmae
</div>
Обратите внимание, что есть опечатка в имени. ASP.Net не знает, какая у вас модель, поэтому она должна использовать динамический объект. Вы не найдете эту ошибку до выполнения.Если у вас есть delcared @model MyModel
, у вас будет ошибка во время сборки, потому что у MyModel нет свойства Nmae.
Однако, не редкость использовать тот же тип модели, что и параметр действия. Представьте, что ваша страница является формой HTML. В этом случае модель, на которую строго отображается ваш взгляд, и модель, переданная в действие MVC, могут быть одинаковыми.
Вид. Это вход. Связывание модели происходит независимо от того, что представляет собой оператор @model, хотя он, безусловно, помогает форматировать данные в том же формате, что и ожидаемое. –