我已经编写了一个自定义Html助手,并且可以从以下@ Html.FootNoteNumberedLink之类的任何视图中调用它。问题是我有一组相当复杂的部分视图嵌套在视图中,这个特定的帮助器需要跟踪通过其他部分视图添加的数据。换句话说,它保持整个视图的所有脚注的运行记录(包含部分视图)。问题是@Html似乎在每个部分视图加载时被实例化。这意味着我的助手不能从局部视图1获得脚注1,2,3,并在部分视图2上继续使用脚注4,5,6,而是HtmlHelper在每个局部视图上都是新的,因此无法附加数据
脚注的内部工作原理是使用ViewData存储脚注列表:ViewData [ViewDataKey] as List
任何人都解释为什么MVC会这样做或者我做错了什么?
像往常一样感谢你的帮助。
答案 0 :(得分:1)
HtmlHelper旨在用作简单的标记生成器类。使用它来跟踪变化可能不是一个好主意。
相反,我会创建一个强类型的viewmodel并在控制器中填充它。 然后,您可以将视图模型传递到主视图并打印它。
除了绘制控制器传递的任何信息外,你的观点应该什么都不做。