Sitecore:获取父级渲染参数

Sitecore:获取父级渲染参数,sitecore,sitecore-mvc,Sitecore,Sitecore Mvc,在Sitecore MVC中考虑这个场景:我有一个名为rendering a的渲染,它是一个内部带有占位符(placeholder-a)的DIV。然后我有第二个渲染,名为渲染B,我把它放在占位符a中 是否有一种方法可以让我的渲染B代码读取渲染a的渲染参数?由于在占位符中分别为每个渲染调用渲染渲染管道,因此无法直接读取渲染a的渲染参数 我这样做,并允许通过占位符传递额外的参数 e、 g 在本例中,我能够通过占位符将所需参数从父视图传输到子视图。正如Anton所述,您无法获得父视图渲染,但您可以获得

在Sitecore MVC中考虑这个场景:我有一个名为rendering a的渲染,它是一个内部带有占位符(placeholder-a)的DIV。然后我有第二个渲染,名为渲染B,我把它放在占位符a中


是否有一种方法可以让我的渲染B代码读取渲染a的渲染参数?

由于在占位符中分别为每个渲染调用渲染渲染管道,因此无法直接读取渲染a的渲染参数

我这样做,并允许通过占位符传递额外的参数

e、 g


在本例中,我能够通过占位符将所需参数从父视图传输到子视图。

正如Anton所述,您无法获得父视图渲染,但您可以获得当前页面上所有渲染的列表,如下所示:

var pageContext=Sitecore.Mvc.Presentation.pageContext.CurrentOrNull;
如果(页面内容!=null)
var renderings=pageContext.PageDefinition.renderings;
渲染完成后,可以查找占位符值、参数等。
另一种可能性(不确定是否适用)是,从当前渲染上下文中,您始终可以获得子渲染。希望这能有所帮助。

鉴于呈现代码是先执行的,您是否可以在会话/缓存中添加呈现参数?然后在渲染B中访问它?

我认为您在这里没有父级渲染。您正在查看兄弟渲染,在本例中是前面的渲染。看看@Varun-Nehra解决方案。您可能会得到渲染列表,并找到与当前渲染匹配的渲染列表,然后执行-1。当然,这假定渲染顺序永远不会改变,可能有更好的解决方案。
@Html.SitecoreExtended().Placeholder("extendedForRendering", new {ExampleRouteValue1 = "Sitecore MVC Placeholder with rendering view"})