【问题标题】:assigning ViewData to nested masterpages将 ViewData 分配给嵌套母版页
【发布时间】:2009-05-06 20:13:29
【问题描述】:

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

原来是这样的:

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

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

【问题讨论】:

    标签: asp.net-mvc master-pages nested


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

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

          这里讨论了将对象传递给该子控制器...

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

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-12-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多