Bac*_*tnz 2 asp.net asp.net-mvc razor
这里有一些新手问题:
在强类型视图中,为什么:
@model MyProj.Models.User
Run Code Online (Sandbox Code Playgroud)
为什么我们使用lambdas:?究竟是做什么的?为什么不只是model.Email?
1. @Html.DisplayNameFor(model => model.Email)
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?我们不是称变量模型吗?(我知道我应该使用@html.()但为什么不能识别模型?
2. users name is: @model.Name
Run Code Online (Sandbox Code Playgroud)
为什么它使用大写的'M'?我们用小写字母命名吗?
3. users name is: Model.Name
Run Code Online (Sandbox Code Playgroud)
谢谢!
为什么我们使用lambdas:?究竟是做什么的?为什么不只是model.Email?
该DisplayNameFor以及所有其他*对于辅助方法正在服用的lambda表达式的参与能力优势表达式树.
这个lambda表达式本身只是接受一个模型类型并返回一个String.但是获取显示名称需要更多信息.
在伪代码中,该方法正在执行:
1.)将lambda视为表达式
2.)解析表达式以获取属性的名称
3.)使用反射获取该属性的DisplayNameAttribute
4.)提取值(如果存在),否则使用名称property
5.)使用显示名称或属性名称为该属性生成标签
如果不使用表达式树,您最终必须将属性名称作为字符串传递...而这很糟糕.这提供了一种使用反射而不使用魔术字符串的强类型方法.
为什么这不起作用?我们不是称变量模型吗?(我知道我应该使用@html.()但为什么不能识别模型?
@model
是Razor对待的特殊指令.它就像一个保留的关键字,与class
or 没有任何不同int
.
为什么它使用大写的'M'?我们用小写字母命名吗?
Model
是视图中具有使用@model
指令定义的类型的属性,并引用您的模型.如果不使用该@model
指令,它将具有一种类型dynamic
.
归档时间: |
|
查看次数: |
1789 次 |
最近记录: |