【问题标题】:What's the difference between using @Html.DisplayFor and just use @Model? [duplicate]使用@Html.DisplayFor 和只使用@Model 有什么区别? [复制]
【发布时间】:2016-04-01 21:19:57
【问题描述】:

考虑一个带有属性PartnerName 的模型类。

在这种情况下,这两个代码似乎产生了相同的结果:

@Model.PartnerName
@Html.DisplayFor(m => m.PartnerName)

使用其中一种对另一种有什么好处吗?因为第一个更干净。

编辑 为了清楚起见,我说的是这个特定的过载。

【问题讨论】:

  • DisplayFor 将使用该类型的任何可用显示模板。如果您有一个特定的模板,例如Customer,具有特殊的布局和颜色,它将使用它。如果没有找到,它将使用默认模板,该模板只是将值呈现为文本。使用Model访问值只会渲染值的文本表示,即调用ToString()的结果@
  • @PanagiotisKanavos 为什么不是这个答案?
  • 因为我确信在 ASP.NET MVC 站点中有几十个重复项,并且至少一个很好的教程页面。
  • 感谢@PanagiotisKanavos。错过了它将模板作为“约定”。只看到其他重载。

标签: asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

当您使用@Model.PartnerName 显示一个值时,它会将纯值放入您的 HTML 中,而没有任何周围的标记。当您使用 @Html.DisplayFor(m => m.PartnerName) 时,您正在调用 DisplayTemplate 来呈现对象。

这些 DisplayTemplates 通常包含标记以确保值以某种方式显示。您还可以创建自定义 DisplayTemplates,例如,您始终可以在带有边框和颜色的精美框内显示您的字符串。

查看这篇文章,了解如何创建自定义 DisplayTemplates。 http://www.codeguru.com/csharp/.net/net_asp/mvc/using-display-templates-and-editor-templates-in-asp.net-mvc.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2013-10-31
    • 2013-07-19
    相关资源
    最近更新 更多