是否有一种将ViewData分配给嵌套母版页的好方法?例如,在我的顶级母版页中,我可能有登录用户的信息。当用户在任何部门页面上时,我还有一个嵌套的母版页。我希望这些数据仅在部门页面上提供。
所以这就是它的样子:
Top Level Master Page - Includes ViewData["userData"]
|
|
---> Nested Master Page - Includes ViewData["departmentalData"]
因此,每当我有一个使用嵌套母版页的视图时,它都会包含ViewData [“userData”]和ViewData [“departmentalData”]。但如果我只使用顶级母版页,那么我只有ViewData [“userData”]。这可能吗?
答案 0 :(得分:1)
如果您坚持使用ViewData作为母版页的数据载体(而不是使用我可能会使用的MvcContrib项目中的Html.RenderAction(...))那么如果您可以识别嵌套在哪些情况下将使用masterpage,您可以设置ActionFilter将所需数据输入ViewData [“departmentalData”]。
答案 1 :(得分:0)
一种可能性是在ViewPage和ViewMasterPage上编写扩展方法以获取所需的数据。我不确定,但我认为这就是Rob Conery在他的Commerce.MVC包中所做的。看一看。
答案 2 :(得分:0)
我们遇到了同样的问题。到目前为止,我们为所有控制器提供了一个基类,并为生成ViewData提供了一个受保护的方法。我们从使用此特定母版页的所有操作中调用它。
我肯定会关注这个问题,看看别人有什么想法。
答案 3 :(得分:0)
MVC有一个子控制器的概念(我不确定它是否仍然存在并将在MVC框架中出现)。您可以在codeplex上的mvc contrib项目中找到它。 可以在这里找到一些描述或博客文章......
http://mhinze.com/subcontrollers-in-aspnet-mvc/
并将对象传递给该子控制器在这里讨论......
http://mhinze.com/passing-objects-to-subcontrollers/
这不是基于主页,但可以帮助你......
答案 4 :(得分:0)
只要您的控制器为要查看的页面设置正确的ViewData,那么无论使用多少母版页都无关紧要。或者我错过了什么?