Asp.net @model到底做什么?
每当我把Asp.net @model到底做什么?,asp.net,asp.net-mvc,asp.net-core,Asp.net,Asp.net Mvc,Asp.net Core,每当我把@model[Type]放在我的razor页面上时,一些泛型类型和方法的类型参数都解析为[Type],例如: string DisplayNameFor<TResult>(Expression<Func<TModel, TResult>> expression); stringdisplaynamefor(表达式); 变成 string DisplayNameFor<TResult>(Expression<Func<[Typ
@model[Type]
放在我的razor页面上时,一些泛型类型和方法的类型参数都解析为[Type],例如:
string DisplayNameFor<TResult>(Expression<Func<TModel, TResult>> expression);
stringdisplaynamefor(表达式);
变成
string DisplayNameFor<TResult>(Expression<Func<[Type], TResult>> expression);
stringdisplaynamefor(表达式);
ASP.NET核心是如何实现的?
TModel
type参数如何变成[type]?@model
@model
指令指定传递给视图的模型类型:
@model TypeNameOfModel
在使用单个用户帐户创建的ASP.NET核心MVC应用程序中,Views/Account/Login.cshtml视图包含以下模型声明:
@model LoginViewModel
生成的类继承自RazorPage
:
public类\u视图\u帐户\u登录\u cshtml:RazorPage
Razor公开了一个Model
属性,用于访问传递给视图的模型:
<div>The Login Email: @Model.Email</div>
登录电子邮件:@Model.Email
@model
指令指定此属性的类型。该指令在RazorPage
中指定视图派生的生成类所依据的T
。如果未指定@model
指令,则model
属性的类型为dynamic
。模型的值从控制器传递到视图。有关详细信息,请参阅
参考资料:。而
DisplayNameFor
是生成的class
的一个示例。Razor文件在应用程序启动(或编译)时动态编译。因此,当您在razor页面中执行@model TModel
时,将在后台生成一个.NET类,其中包含生成razor视图的逻辑。扩展方法只是根据它所遵循的内容使用类型,因为generic@Tseng扩展方法如何推断类型?因为扩展方法上的类型是从其名为onDisplayNameFor的对象推断的,并且是从该对象推断的。它不是扩展方法。缺少注释,这个答案完全是引用上述参考链接。正如我所知,在这种情况下,这是给出答案的正确方法:引用应该被强烈表达。