在视图和它的部分之间共享HtmlHelper类

时间:2013-12-19 22:37:55

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

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

脚注的内部工作原理是使用ViewData存储脚注列表:ViewData [ViewDataKey] as List

任何人都解释为什么MVC会这样做或者我做错了什么?

像往常一样感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

除了绘制控制器传递的任何信息外,你的观点应该什么都不做。