@model到底能做什么?

时间:2019-08-04 13:33:19

标签: asp.net asp.net-mvc asp.net-core

每当我在剃须刀页面上放置@model [Type]时,某些通用类型和方法的类型参数都会解析为[Type],例如:

string DisplayNameFor<TResult>(Expression<Func<TModel, TResult>> expression);

成为

string DisplayNameFor<TResult>(Expression<Func<[Type], TResult>> expression);

ASP.NET Core如何实现这一目标? TModel类型参数如何变为[Type]?

1 个答案:

答案 0 :(得分:1)

@model

@model指令指定传递给视图的模型的类型:

@model TypeNameOfModel

在使用单个用户帐户创建的ASP.NET Core MVC应用程序中, Views / Account / Login.cshtml 视图包含以下模型声明:

@model LoginViewModel

生成的类继承自RazorPage<dynamic>

public class _Views_Account_Login_cshtml : RazorPage<LoginViewModel>

Razor公开了一个Model属性,用于访问传递给视图的模型:

<div>The Login Email: @Model.Email</div>

@model指令指定此属性的类型。伪指令在视图中派生的T中的RazorPage<T>中指定了生成视图的类。如果未指定@model指令,则Model属性的类型为dynamic。模型的值从控制器传递到视图。有关更多信息,请参见Strongly typed models and the @model keyword

参考:@model