@Html.ValueFor(x=>x.PropertyName)
@Model.PropertyName
看起来这两个Razor命令做的是完全一样的事情。使用一个比另一个有什么特殊的情况或好处吗?
发布于 2013-05-24 23:04:30
ValueFor
将调用用于呈现该属性所具有的类型的现有模板。默认情况下,此模板可能与ToString()
一样简单,但您可以定义模板的任何内容。
@Model.PropertyName
将简单地将值表示为字符串。
发布于 2013-05-24 23:15:06
@Html.ValueFor(x => x.PropertyName)
在幕后调用了很多代码和反射。
它将允许您自定义呈现值的方式,然后在整个站点上具有一致的格式。例如,如果您的属性是用DisplayFormatAttribute
装饰的。
@Model.PropertyName
直接获取属性的值,对其调用ToString(),然后对结果进行转义。不会发生其他格式设置。
为了进行说明,您可能会看到以下内容:
[DisplayFormat(DataFormatString="{0:C}")]
public decimal PropertyName = 1234.56;
@Html.ValueFor(x => x.PropertyName) => "£1,234.56"
@Model.PropertyName => "1234.56"
https://stackoverflow.com/questions/16738010
复制相似问题