@Html.ValueFor(x=>x.PropertyName)
@Model.PropertyName
看起来这两个Razor命令做的是完全一样的事情。使用其中一种是否有特殊情况或好处?
@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
将简单地将值显示为字符串