【问题标题】:Using HTML Helper to create views is better than using direct HTML? Considering performance使用 HTML Helper 创建视图比使用直接 HTML 更好?考虑性能
【发布时间】:2013-03-23 16:14:19
【问题描述】:

我想知道 HTML Helpers 或直接 HTML 构造视图,使用 Razor 视图引擎和 Html.LabelFor()、Html.TextBoxFor() 等原生方法之间是否存在显着的性能差异。

在任何情况下我应该避免使用 HtmlHelpers(性能方面)?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 razor html-helper


    【解决方案1】:

    我更喜欢在构建表单时使用辅助方法。我也更喜欢使用 Html.TextboxFor(),99% 的时间我使用 Html.EditorFor() 进行编辑。

    所以,我构建了一个这样的表单:

    @Html.LabelFor(model=>model.SomeField)
    @Html.EditorFor(model=>model.SomeField)
    @Html.ValidationMessageFor(model=>model.SomeField)
    

    这给了我很多: 它确保我的所有字段都具有正确的名称和 ID,并且可以使用客户端验证,而无需我编写大量额外的标记。

    使用 Html.EditorFor() 方法代替 Html.TextboxFor(),让我有机会为正确的字段使用正确的编辑器。 电子邮件字段应使用 type="email",日期应使用 type="date"。不是类型=“文本”。使用 EditorFor(),我可以制作模板,在这里我可以使用 TextboxFor() 或只是简单的标记。这样,每个带有电子邮件字段的模型都将获得相同的编辑器,每个日期都将获得相同的日期选择器。

    简而言之: 如果您不使用 EditorForModel(),请始终使用 LabelFor()、EditorFor() 和 ValidationMessageFor()。如果您需要特殊标记,请使用模板。

    【讨论】:

      【解决方案2】:

      只要您以应有的方式使用帮助程序,设计人员学习如何使用应该是相当简单的。请记住,我们的目标是让事情变得简单,如果它们最终使事情变得更复杂,则意味着它们没有被正确使用。

      性能差异可以忽略不计

      【讨论】:

      • 是的,我指的是@Html.LabelFor()、@Html.TextBoxFor()方法
      • 没错。这些帮助程序为您提供了一种编码视图的简单方法,并避免编写复杂且容易忘记的 HTML 代码。
      • 是的。开发人员周期的成本远高于 CPU 周期。
      【解决方案3】:

      我没有关于性能的答案,但我有你最后一个问题的答案。

      在任何情况下我应该避免使用 HtmlHelpers?

      在我们的项目中,我们倾向于避免使用 HtmlHelpers,因为静态方法(例如 Html 辅助扩展方法)很难以我们想要的方式进行单元测试。

      我们没有使用 HTML Helpers(扩展方法),而是为我们的视图提供了一个自定义基类。这个基类公开了我们的辅助服务(Uri、Html、DataEndpoint)并保持可测试性。

      【讨论】:

        猜你喜欢
        • 2013-10-01
        • 1970-01-01
        • 2011-03-17
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        相关资源
        最近更新 更多