Orchard CMS将数据从View传递到主题布局

时间:2012-02-06 11:40:29

标签: asp.net-mvc-3 orchardcms

我正在编写一个带有自定义主题的自定义Orchard模块。我想将视图中的数据传回布局,以根据视图中确定的数据更改布局。

在我的例子中,我的主题中有一个左导航 - 某些视图应该能够指示布局不要渲染这个左导航。

在标准的mvc 3中,我只是将值传递给ViewBag,但这似乎不适用于Orchard - 我猜测布局代码是在渲染View之前执行的?

我已经研究过如何使用Shape移动这些数据,但看起来它可能对我正在努力实现的目标有点重量级。

像这样传递数据作为ViewBag的替代方法的最佳做法是什么?

更新:在玩了一下之后我才注意到TempData正在布局中被拾取 - 有人可以解释为什么TempData被传输,但ViewData不是吗?从Orchard POV使用是否安全?

1 个答案:

答案 0 :(得分:3)

比这更容易......所有模板都可以访问布局形状,这是一个动态对象。这意味着您可以动态修改它,添加属性等。 在您的特定情况下,抑制区域,您甚至可以将其设置为null:区域只是形状,对于顶级区域,它们是布局上的expando。因此,如果您有一个名为Foo的区域,则将Layout.Foo设置为null应该可以解决问题。事实上,我在我的一个主题中正是这样做,以便在不必创建特定小部件层的情况下抑制错误页面中的边栏:

Layout.AsideFirst = null;
Layout.AsideSecond = null;