48

这三个不同的功能存在于 Razor 视图引擎中,可用于实现类似的结果。最后,它们三个都只是渲染 HTML 代码,但定义和使用它们的方式却大不相同。我知道:

Html Helpers 被创建为HtmlHelper类的扩展方法。他们经常使用TagBuilder该类来生成一些 HTML,并且总是应该返回一个IHtmlString.

Razor Helpers(@helper方法)可以在本地(在同一个 razor 文件中)或全局(在App_Code目录中)定义。它们是 HTML 代码的小片段,可以专门在 Razor 文件中重复使用。

最后,部分视图只是常规视图文件,可以使用@Html.Partial帮助程序包含在其他视图文件中。

我的问题是:

这些功能中的每一个是否都有特定的场景?还是归结为不同的口味才能达到相同的效果?

4

1 回答 1

67

HTML Helpers用于可重用的组件。例如 WebGrid、Pager 等。它们作为程序集分发,不依赖于 Razor。如果出现以下情况,请选择此选项:

  • 功能真正可重用并适用于任何应用程序
  • 您不希望人们修改它,或者想要对其进行版本化

部分视图是一种将大视图拆分为更小的部分以使事情更易于管理的方法。它们对于特定于您的应用程序的可重用性也很有用。这些由视图引擎定位,因此您可以在不同的地方(例如视图/共享)定义相同的部分,允许您自定义每个控制器、区域或显示模式。如果出现以下情况,请选择此选项:

  • 功能是特定于应用程序的
  • 想要自定义每个控制器、区域或显示模式

Local Helpers是一种多次执行相同模板的方法,无需重复。您还可以使用它将视图分成多个部分以避免深度嵌套,但将所有内容保存在同一个文件中。如果出现以下情况,请选择此选项:

  • 功能是特定于视图的

应用程序助手(在 App_Code 中)是本地助手和 HTML 助手的混合体。如果出现以下情况,请选择此选项:

  • 喜欢 Razor 而不是 TagBuilder
  • 不介意分发文件而不是程序集
  • 更喜欢类型安全的方法调用语法而不是@Html.Partial(name)
于 2013-08-04T21:36:27.340 回答