Asp.net mvc 输出所有Umbraco 4.10 MVC管线的自定义渲染模型

Asp.net mvc 输出所有Umbraco 4.10 MVC管线的自定义渲染模型,asp.net-mvc,asp.net-mvc-routing,umbraco,Asp.net Mvc,Asp.net Mvc Routing,Umbraco,是否有任何方法可以覆盖默认的RenderMvcController以输出每个路由的自定义RenderModel。这可能是通过劫持路线,但我想把一些自定义数据,将用于每一页 例如,在电子商务网站上,每个页面都显示购物篮信息。理想情况下,这将在每个视图的渲染模型中可用。是否有办法将默认控制器更改为自定义控制器,以输出具有篮属性的扩展渲染模型 更新: 这是现在在UMPLORO 1.1.0+中支持的。本页的结尾是:< P>我将考虑的解决方案不是尝试将自定义数据压缩到UMPLORO的默认页面模型中,考虑使

是否有任何方法可以覆盖默认的RenderMvcController以输出每个路由的自定义RenderModel。这可能是通过劫持路线,但我想把一些自定义数据,将用于每一页

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

更新:


这是现在在UMPLORO 1.1.0+中支持的。本页的结尾是:

< P>我将考虑的解决方案不是尝试将自定义数据压缩到UMPLORO的默认页面模型中,考虑使用<代码> BasketSurfaceController < /代码>,并使用<代码> @ HTML将筐内容呈现到屏幕上。,“BasketSurface”)或类似内容。通过这种方式,您可以保持视图模型的独立性,并将其显示为
\u Layout.cshtml
的一部分或显示在所需的特定页面上

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

有关更多信息,请参阅上的文档

更新:

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


尽管我仍然主张在这个特定场景中使用
ChildAction
方法,但覆盖文档类型控制器以传递自定义视图模型对于传递特定于页面的预格式模型(例如,带有注释的博客条目。相关类别)来说是理想的选择和/或传递一个模型,该模型包含从页面本身不可用但在每个页面上都需要的数据(例如站点名称、域、区域、全局跟踪/附属代码、元数据)。考虑使用<代码> BasketSurfaceController < /代码>,并使用<代码> @ HTML将筐内容呈现到屏幕上。Action(“头显示”、“BasketSurface”)< /代码>或类似的内容。通过这种方式,您可以保持视图模型的独立性,并将其显示为
\u Layout.cshtml
的一部分或显示在所需的特定页面上

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

有关更多信息,请参阅上的文档

更新:

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


尽管我仍然主张在这个特定场景中使用
ChildAction
方法,但覆盖文档类型控制器以传递自定义视图模型对于传递特定于页面的预格式模型(例如,带有注释的博客条目。相关类别)来说是理想的选择和/或传递包含页面本身不可用但每个页面上都需要的数据的模型(例如,站点名称、域、区域设置、全局跟踪/附属代码、元数据)。

我假设这是Umbraco v4.10?嗨,是的,是的,是v4.10,我已更新问题以澄清我假设这是Umbraco v4.10?嗨,是的,是v4.10,我已经更新了这个问题,让它更清晰,这就是我目前正在做的,不幸的是,这意味着每次在一个动作中使用这个篮子时,我都在加载它。在一个标准的MVC项目中,我将加载它一次,然后它将在视图模型中可用。但是,看起来我无法在Umbraco 4.10中使用当前的MVC实现来实现这一点。您每次都会加载一个篮子,即使它在Umbraco的页面模型中,因为它是在逐个请求的基础上创建的。我认为ChilsAction方法至少意味着,如果需要db调用,您可以将逻辑分离,并从会话中构建输出。但我可能会在一个请求中的多个不同位置使用篮,例如,查看篮页面可能会将其放在标题中,主页内容和页脚不要忘记,每个请求都会创建一个控制器实例,因此您可以允许在Context.Items集合中保存和访问篮子信息。或者,使用Session、TempData对象,甚至扩展控制器本身。这就是我目前正在做的,不幸的是,这意味着每次在动作中使用时,我都在加载篮子。在一个标准的MVC项目中,我将加载它一次,然后它将在视图模型中可用。但是,看起来我无法在Umbraco 4.10中使用当前的MVC实现来实现这一点。您每次都会加载一个篮子,即使它在Umbraco的页面模型中,因为它是在逐个请求的基础上创建的。我认为ChilsAction方法至少意味着,如果需要db调用,您可以将逻辑分离,并从会话中构建输出。但我可能会在一个请求中的多个不同位置使用篮,例如,查看篮页面可能会将其放在标题中,主页内容和页脚不要忘记,每个请求都会创建一个控制器实例,因此您可以允许在Context.Items集合中保存和访问篮子信息。或者,使用会话、TempData对象,甚至扩展控制器本身。