@Html.ValueFor(x=>x.PropertyName)与@Model.PropertyName之间的区别是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (54)
@Html.ValueFor(x=>x.PropertyName) 
@Model.PropertyName

看起来这两个Razor命令完全相同。是否有任何特殊的情况或使用某一种的好处?

提问于
用户回答回答于

ValueFor将调用存在用于呈现属性所具有的类型的模板。默认情况下,这个模板可能很简单ToString(),但你可以定义任何东西作为模板。

@Model.PropertyName 将简单地呈现为字符串的值。

用户回答回答于

@Html.ValueFor(x => x.PropertyName)在引擎盖下调用了很多代码和反射。 它将允许你自定义值的呈现方式,然后在整个网站中使用一致的格式。例如,如果你的值装饰着DisplayFormatAttribute

@Model.PropertyName直接获取属性的值,调用ToString(),HTML转义结果。没有其他格式将会发生。

为了说明,你可能会看到:

[DisplayFormat(DataFormatString="{0:C}")]
public decimal PropertyName = 1234.56;

@Html.ValueFor(x => x.PropertyName)  =>  "£1,234.56"
@Model.PropertyName                  =>  "1234.56"

扫码关注云+社区