拦截视图渲染以将Html助手添加到ViewData字典

时间:2011-11-10 20:25:48

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

我需要在模板中访问视图中的Html帮助器,因此我可以在视图中执行此操作:

ViewData["RootHtmlHelper"]=Html;

在模板内部可以捕获这个html帮助器。

但是如何在没有更改原始视图代码中没有行"ViewData["RootHtmlHelper"]=Html;"的任何内容的情况下执行此操作? 有没有办法使用IViewEngine来做到这一点? 在View生命周期中,Html助手开始“活着”?

感谢。

1 个答案:

答案 0 :(得分:1)

我尝试了很多东西,比如局部视图,RazorEngine,......以及EditorForModel()的包装。

在我自己的EditorForModel()中,我打了一个原始EditorForModel()的电话,在调用它之前,我在ViewData中设置了对Html helper的引用。在我的模板中,我可以从Html helper恢复ViewData,并且一切运行良好,而不是在我的所有视图中都使用存根。