ASP.NET MVC : When to use custom HTML helper methods vs Html. RenderAction吗?

标签 asp.net asp.net-mvc

对于何时使用自定义帮助器方法,何时使用RenderAction以及何时仅使用ViewData来说,我还是不清楚的。它们的某些功能略有重叠。

例如,如果要创建“类别”导航栏,是否可以创建一个新的帮助器方法并将其放置在某些局部 View 中?最初我虽然这样做,但是我在一些博客上阅读了使用RenderAction的信息。我一直在来回思考,不仅可以使用此示例,还可以使用一些帮助。

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

最佳答案

我遵循的一般准则是:

HtmlHelper方法:

  • 用于标准化标记。我使用助手来确保我的表单字段,输入按钮和图像标签使用一致的标记。
  • 当结果标记最小时使用。少量的文本,表单字段标记等。我不使用帮助器来呈现完整的域对象。
  • 对少量离散参数进行操作。如果我需要遍历一个集合并显示一些东西,那只是部分原因。如果我需要大量输入,那也是部分的。
  • 不包含任何业务逻辑,仅包含表示逻辑。参数通常是解决方案域中的对象,而不是业务/问题域中的对象。
  • 通常范围很广,适用于应用程序的大部分。

  • 局部渲染:
  • 当我想将大 View 分解成较小的块时使用。该模型应该是“主” View 的模型的子集。
  • 局部 View 通常仅由某些 Controller 或区域使用。

  • 渲染操作:
  • 当我想要创建可以以各种方式组合的小功能块时使用。
  • 最常用于生成适用于许多 Controller 或区域的内容,例如导航控件。

  • ViewData:

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

    关于ASP.NET MVC : When to use custom HTML helper methods vs Html. RenderAction吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2239732/

    相关文章:

    c# - 通过 javascript 从 View 渲染页面

    javascript - 在 ASP.NET 内容页面和中继器控件中使用 jquery 日期时间选择器

    javascript - ASP.NET MVC - Uncaught ReferenceError : jQuery is not defined even if I'm including the library

    c# - 如果字符串参数以文件扩展名结尾,则请求 session 对象为空

    asp.net-mvc - 为什么 ASP.NET MVC 不使用通用操作方法?

    asp.net - 无法找到程序集 - 无法追踪错误

    c# - 防止 TFS 添加临时文件

    c# - 从多个图像生成单个 PDF

    Html.TextBox 控件的 jQuery UI Datepicker

    c# - Kendo UI - 2 个日期之间的网格/过滤器菜单自定义