Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net @model到底做什么?_Asp.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

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的对象推断的,并且是从该对象推断的。它不是扩展方法。缺少注释,这个答案完全是引用上述参考链接。正如我所知,在这种情况下,这是给出答案的正确方法:引用应该被强烈表达。