我们什么时候应该使用Html Helpers,Razor Helpers或Partial Views?

Mer*_*ovi 47 asp.net-mvc razor

Razor视图引擎中存在这三个不同的特征,可用于实现类似的结果.最后,它们中的所有三个都只是呈现HTML代码片段,但定义和使用它们的方式却截然不同.我知道:

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

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

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

我的问题是:

这些功能中是否有特定的方案?或者归结为不同的口味以达到相同的效果?

Max*_*oro 67

HTML Helpers用于可重用组件.例如WebGrid,Pager等.它们作为程序集分发,不依赖于Razor.选择此项如果:

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

部分视图是将大型视图拆分为较小部分以使事物更易于管理的一种方法.它们对于特定于您的应用程序的可重用性也很有用.它们由视图引擎定位,因此您可以在不同位置定义相同的部分(例如,视图/共享),允许您根据控制器,区域或显示模式进行自定义.选择此项如果:

  • 功能是特定于应用程序的
  • 想要根据控制器,区域或显示模式进行自定义

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

  • 功能是特定于视图的

Application Helpers(在App_Code中)是本地帮助程序和HTML帮助程序之间的混合.选择此项如果:

  • 喜欢Razor over TagBuilder
  • 不介意分发文件而不是程序集
  • 更喜欢类型安全的方法调用语法而不是 @Html.Partial(name)