gpt4 book ai didi

View 中的 ASP.NET Razor 模型语法

转载 作者:行者123 更新时间:2023-12-02 08:46:45 24 4
gpt4 key购买 nike

这里有几个新手问题:

在强类型 View 中,为什么:

@model MyProj.Models.User

为什么我们使用 lambdas: ?那到底是做什么的?为什么不只是模型。电子邮件?

1. @Html.DisplayNameFor(model => model.Email)

为什么这行不通?我们不是调用变量模型吗? (我知道我应该使用 @html.() 但为什么模型不可识别?

2. users name is: @model.Name 

为什么它与大写字母“M”一起使用?我们不是用小写命名的吗?

3. users name is: Model.Name

谢谢!

最佳答案

Why do we use lambdas: ? What exactly does that do? Why not just model.Email?

DisplayNameFor以及所有其他*For helper methods正在利用 lambda 表达式的能力参与 Expression Trees .

这个 lambda 表达式本身只是接受一个模型类型并返回一个字符串。但是获取显示名称需要更多信息。

在伪代码中,该方法正在做:

1.) 将 lambda 视为 Expression
2.) 解析表达式以获取属性的名称
3.) 使用反射获取DisplayNameAttribute对于那个属性
4.) 如果值存在则提取值,否则使用属性的名称
5.) 使用显示名称或属性名称为该属性生成标签

如果不使用表达式树,您最终将不得不将属性名称作为字符串传递……这很糟糕。这提供了一种无需 magic strings 即可使用反射的强类型方式。 .

Why doesn't this work? Didn't we call the variable model? (I know I should use @html.() but why isn't model recognisable?

@modelspecial directive Razor 对其进行了不同的处理。它就像一个保留关键字,与 classint 没有任何区别。

Why does it work with an uppercase 'M'? Didnt we name it with a lower case?

Model 是您 View 上的一个属性,它具有您使用 @model 指令定义的类型,并引用您的模型。如果不使用 @model 指令,它将具有 dynamic 类型。

关于 View 中的 ASP.NET Razor 模型语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com