0

有没有办法覆盖默认的 RenderMvcController 来为每个路由输出一个自定义的 RenderModel。这可能是通过劫持路线,但我想放置一些将在每个页面上使用的自定义数据。

例如,在电子商务网站上,每个页面都显示购物篮信息。理想情况下,这将在每个视图的 RenderModel 中可用。有没有办法将默认控制器更改为自定义控制器,它将输出具有篮子属性的扩展渲染模型?

更新:

Umbraco 6.1.0+ 现在支持此功能,文档位于本页末尾:http: //our.umbraco.org/documentation/Reference/Mvc/custom-controllers

4

1 回答 1

3

我会考虑的解决方案不是尝试将自定义数据撬入 Umbraco 的默认页面模型,而是考虑使用 aBasketSurfaceController并将购物篮内容呈现到屏幕上@Html.Action("HeaderDisplay", "BasketSurface")或类似的东西。这样,您可以保持视图模型独立,并将其显示为_Layout.cshtml您需要的特定页面或特定页面的一部分。

同样使用这种方法,您可以维护一组特定的篮子相关视图,这些视图都由同一个控制器提供,并且与 Umbraco 的模型完全分离。

有关详细信息,请参阅有关子操作的文档。

更新:

在重新阅读文档时,我可以看到这在 4.10+ 中是可能的,而且非常容易。文档在此处,但简而言之,您可以通过替换默认控制器来覆盖对每种文档类型的请求或覆盖所有请求。

尽管我仍会提倡ChildAction这种特定场景的方法,但重写文档类型控制器以传递自定义视图模型对于传递特定于页面的预制模型是理想的(例如,带有评论的博客条目。相关类别)和/或传递一个模型,该模型包含页面本身不可用但每个页面都需要的数据(例如站点名称、域、区域设置、全局跟踪/附属代码、元数据)。

于 2012-11-24T19:36:51.540 回答