@Html.ValueFor(x=>x. propertyname)和@Model.PropertyName之间的区别是

本文关键字:PropertyName @Model 之间 区别 ValueFor propertyname @Html | 更新日期: 2023-09-27 18:15:26

@Html.ValueFor(x=>x.PropertyName) 
@Model.PropertyName

看起来这两个Razor命令做的是完全一样的事情。使用其中一种是否有特殊情况或好处?

@Html.ValueFor(x=>x. propertyname)和@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"

ValueFor将调用用于呈现属性所具有的类型的模板。默认情况下,该模板可能像ToString()一样简单,但您可以将任何内容定义为模板。

@Model.PropertyName将简单地将值显示为字符串