2

什么情况下需要明确使用 HtmlHelper?

我正在构建一个用于看电视的小型 MVC 网站,每个频道都显示为某种增强的 100px * 100px 磁贴:

在鼠标悬停时,例如,

  • 将显示一个星号,单击此星号会使该频道成为收藏频道并更改图标。
  • “管理工具栏”从图标底部向上滑动,允许编辑、删除或查看该频道的详细信息
    • 如果频道是录制频道,则会显示一个附加图标

最初,我只在视图中定义了标记。现在我创建了一个 htmlhelper 方法,它一次传递一个“通道”项并返回几乎相同的标记。

我不确定是否有客观的优点和缺点?我读过 htmlhelpers 应该只用于次要操作。我想这仍然是一个小手术。

我认为唯一的优点是我可能还需要在另一个视图上使用通道图块,并且使用 htmlhelper,我不会有(很多)冗余代码。

4

2 回答 2

2

查看显示/编辑器模板(例如此处此处此处)。它们是插入@Html.DisplayFor和的部分视图@Html.EditorFor

我认为:

  • 如果生成的 HTML 相当简单并且涉及到很多服务器端逻辑(例如,基于服务器端模型的验证),Html Helpers 就很好。
  • 如果您也想在另一个页面中使用一个页面的一个部分,那么部分视图非常适合。但是如果你想在很多地方重复使用它们,它们就有点笨拙了。
  • 这是显示和编辑器模板最适合的地方。

还有一点:显示和编辑器模板基于模型类型:您为特定类型定义自定义编辑器和/或显示。如果您想再次为各种模型使用相同的 HTML 模式,这可能不是一个完美的选择。在这种情况下,您可能无论如何都想使用 Html Helpers - 它们允许轻松传递参数。部分视图不带参数。您必须将它们作为模型或在 ViewBag 中移交。

于 2013-07-17T08:35:36.717 回答
0

你是对的 HtmlHelpers 当你需要输出相对少量的html时使用。其原因是 html 是通过在 c# 代码中构建字符串生成的,随着帮助程序内部逻辑数量的增长,维护它可能是一个问题。我建议使用部分视图为您的案例生成 html,因为它可以重复使用(使用 Html.RenderPartial)并且很容易修改,因为它是带有 html 智能感知的剃刀视图

于 2013-07-17T08:21:09.220 回答