【问题标题】:Sharing the HtmlHelper Class between a View and it's Partials在 View 和它的 Partials 之间共享 HtmlHelper 类
【发布时间】:2014-01-08 16:38:21
【问题描述】:

我已经编写了一个自定义 Html 帮助程序,并且可以从任何视图调用它,例如以下 @Html.FootNoteNumberedLink。问题是我有一组相当复杂的部分视图嵌套在视图中,这个特殊的助手需要跟踪通过其他部分视图添加的数据。换句话说,它正在为整个视图(包含部分视图)保留所有脚注的运行记录。问题是@Html 似乎在每次部分视图加载时都会被实例化。这意味着我的助手不能从局部视图 1 中获得脚注 1、2、3,并继续在局部视图 2 上使用脚注 4、5、6,而是 HtmlHelper 在每个局部视图上都是新的,因此无法附加数据.

脚注的内部工作是使用 ViewData 来存储脚注列表,如下所示:ViewData[ViewDataKey] as List

有人解释为什么 MVC 会这样做还是我做错了什么?

一如既往地感谢您的帮助。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 html-helper asp.net-mvc-partialview


    【解决方案1】:

    HtmlHelper 旨在用作简单的标记生成器类。使用它来跟踪更改可能不是一个好主意。

    相反,我会创建一个强类型视图模型并将其填充到控制器中。 然后您可以将视图模型传递给您的主视图并打印它。

    除了绘制控制器传递的任何信息之外,您的视图应该什么都不做。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2012-12-06
      • 1970-01-01
      • 2020-04-08
      相关资源
      最近更新 更多