ASP.NET MVC:何时使用自定义HTML帮助程序方法vs Html.RenderAction?

Gab*_*abe 10 asp.net asp.net-mvc

关于何时使用自定义辅助方法以及何时使用RenderAction以及何时简单地使用ViewData,我有点不清楚.它们的一些功能略有重叠.

例如,如果我要创建一个类别导航栏,我是否会创建一个新的辅助方法并将其放在某个局部视图中?我最初虽然这样做,但我在一些博客上读到使用RenderAction代替.我一直在思考,并且可以使用一些帮助而不仅仅是这个例子,但总的来说.

假设类别列表来自某些数据源.

Set*_*son 18

我遵循的一般准则是:

HtmlHelper方法:

  1. 用于标准化标记.我使用帮助程序来确保我的表单字段,输入按钮和图像标记使用一致的标记.
  2. 在生成的标记最小时使用.少量文本,表单字段标记等.我不使用帮助器来呈现完整的域对象.
  3. 操作少量离散参数.如果我需要迭代一个集合并显示一些东西,那就是部分的.如果我需要大量的输入,那也是一个部分.
  4. 不包含任何业务逻辑,只包含表示逻辑.参数通常是解决方案域中的对象,而不是业务/问题域.
  5. 通常非常通用,适用于大部分应用程序.

渲染部分:

  1. 当我想将大视图分解成更小的片段时使用.该模型应该是"主"视图模型的子集.
  2. 部分视图通常仅由某些控制器或区域使用.

渲染动作:

  1. 当我想创建可以以各种方式组合的小块功能时使用.
  2. 最常用于生成适用于许多控制器或区域的内容,例如导航控件.

ViewData的:

我将使用ViewData来跟踪适用于所有视图的全局数据,例如当前用户.如果我需要一种显示此数据的一致方法,我通常会为它创建一个部分,然后在母版页中执行RenderPartial().