7

有没有将 ViewData 分配给嵌套母版页的好方法?例如,在我的顶级母版页中,我可能有登录用户的信息。我还有一个嵌套母版页,当用户在任何部门页面上时会显示该母版页。我希望这些数据仅在部门页面上可用。

这就是它的外观:

Top Level Master Page - Includes ViewData["userData"]
    |
    |
    ---> Nested Master Page - Includes ViewData["departmentalData"]

因此,每当我有一个使用嵌套母版页的视图时,它将同时包含 ViewData["userData"] 和 ViewData["departmentalData"]。但如果我只使用顶级母版页,那么我只有 ViewData["userData"]。这可能吗?

4

5 回答 5

1

如果您坚持使用 ViewData 作为母版页的数据载体(而不是使用我可能会使用的 MvcContrib 项目中的 Html.RenderAction(...)),那么如果您可以确定在哪些情况下嵌套母版页将是使用时,您可以设置一个 ActionFilter 将所需的数据输入到 ViewData["departmentalData"]。

于 2009-05-18T06:17:46.657 回答
0

一种可能性是在 ViewPage 和 ViewMasterPage 上编写扩展方法来获取您需要的数据。我不确定,但我认为这就是 Rob Conery 在他的Commerce.MVC包中所做的。看看那个。

于 2009-05-06T20:16:47.087 回答
0

我们遇到了同样的问题。到目前为止,我们提出了所有控制器的基类和生成 ViewData 的受保护方法。我们从使用此特定母版页的所有操作中调用它。

我一定会关注这个问题,看看其他人想出了什么。

于 2009-06-05T20:21:07.107 回答
0

MVC 有一个子控制器的概念(我不确定这是否仍然存在并且会在 MVC 框架中出现)。您可以在 codeplex 上的 mvc contrib 项目中找到它。一些描述或博客文章可以在这里找到...

http://mhinze.com/subcontrollers-in-aspnet-mvc/

并在此处讨论将对象传递给该子控制器...

http://mhinze.com/passing-objects-to-subcontrollers/

这不是基于母版页,但可以帮助您...

于 2009-06-07T17:28:12.983 回答
0

只要您的控制器为将要查看的页面设置正确的 ViewData,那么使用多少母版页就无关紧要了。还是我错过了什么?

于 2009-06-11T17:52:06.423 回答