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

Razor视图引擎中存在这三种不同的function,可用于实现类似的结果。 最后,他们三人只是呈现HTML代码片断,但定义和使用它们的方式则相当不同。 我知道:

Html助手被创build为HtmlHelper类的扩展方法。 他们经常使用TagBuilder类来生成一些HTML,并总是返回一个IHtmlString

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

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

我的问题是:

是否有这些function的每个特定的情况? 或者为了达到相同的效果,可以归结为不同的口味?

HTML助手是可重用的组件。 例如WebGrid,Pager等,这些都是作为程序集分发的,并且不依赖于Razor。 select这个如果:

  • function是真正可重用的,适用于任何应用程序
  • 你不希望人们修改它,想要版本

部分视图是将大视图分割成更小的部分以使事情更易于pipe理的一种方法。 它们对于特定于应用程序的可重用性也很有用。 这些位于视图引擎中,因此可以在不同的位置(例如视图/共享)中定义相同的部分,允许您根据控制器,区域或显示模式进行自定义。 select这个如果:

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

本地助手是多次执行相同模板的一种方式,无需重复自己。 您也可以使用它来将视图分解为多个部分,以避免深层嵌套,但将所有内容保存在同一个文件中。 select这个如果:

  • function是特定于视图的

应用程序助手 (在App_Code中)是本地助手和HTML助手之间的混合。 select这个如果:

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