我什么时候应该在MVC中使用Html.Displayfor

Bre*_*ead 41 c# asp.net-mvc asp.net-mvc-3

我是MVC的新手,知道如何使用Html.Displayfor(),但我不知道何时使用它?

任何的想法?

Dar*_*rov 70

DisplayFor助手呈现给定类型对应的显示模板.例如,如果你想以某种方式个性化这个模板,你应该使用它.或者使用集合属性.与collection属性一起使用时,将自动为集合的每个元素呈现相应的模板.

以下是它的工作原理:

@Html.DisplayFor(x => x.SomeProperty)
Run Code Online (Sandbox Code Playgroud)

将呈现给定类型的默认模板.例如,如果您使用某些格式选项修饰了视图模型属性,那么它将遵循以下选项:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime SomeProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

并且在您的视图中使用DisplayFor帮助程序时,它将通过考虑此格式来呈现属性,而如果您使用DisplayFor它,则不会遵循此自定义格式.

但不知道何时使用它?

当您想要从视图模型中显示值时,请始终使用它.始终使用:

@Html.DisplayFor(x => x.SomeProperty)
Run Code Online (Sandbox Code Playgroud)

代替:

@Model.SomeProperty
Run Code Online (Sandbox Code Playgroud)

  • 我们能解释一下为什么应该避免使用 `@Model.SomeProperty` 吗?一致性? (2认同)

Zru*_*uty 6

我正在延长@ Darin的答案.

Html.DisplayFor(model => model.SomeCollection)将遍历项目SomeCollection并使用DisplayFor()递归方式显示项目.