在Sitecore MVC中考虑这个场景:我有一个名为Rendering A的渲染,它是一个内置占位符的DIV(占位符-a)。然后我有一个名为Rendering B的第二个渲染,它放在占位符-a中。
我的渲染B代码是否可以读取渲染A的渲染参数?
答案 0 :(得分:0)
由于为占位符中的每个渲染分别调用 RenderRendering 管道,因此无法开箱即用。
我是通过overriding placeholder control完成的,并允许通过占位符传递其他参数。
e.g。
@Html.SitecoreExtended().Placeholder("extendedForRendering", new {ExampleRouteValue1 = "Sitecore MVC Placeholder with rendering view"})
在这种情况下,我能够通过占位符从父视图向子视图传输所需的参数。
答案 1 :(得分:0)
正如Anton所说,你无法获得父渲染但是你可以获得当前页面上所有渲染的列表,如下所示:
var pageContext = Sitecore.Mvc.Presentation.PageContext.CurrentOrNull;
if(pageContent!=null)
var renderings = pageContext.PageDefinition.Renderings;
获得渲染后,您可以查找占位符值,参数等。 另一种可能性,不确定这是否适合您,是从当前渲染上下文中,您始终可以获得子渲染。希望这有帮助。
答案 2 :(得分:0)
看作渲染首先执行代码,您是否可以在会话/缓存中添加渲染参数?然后在渲染B中访问它?