2014-11-22 4 views
0

Рассмотрите этот сценарий в Sitecore MVC: у меня есть рендеринг под названием Rendering A, который является DIV с заполнителем внутри (placeholder-a). Затем у меня есть второй рендеринг с именем Rendering B, который я помещаю внутри placeholder-a.Sitecore: Получить параметры рендеринга родителя

Есть ли способ, которым мой код для рендеринга B может читать параметры рендеринга рендеринга A?

+0

Я не думаю, что вы получаете родительский рендеринг здесь. Вы смотрите на рефераты братьев и сестер, в этом случае тот, который предшествует. Посмотрите на решение @Varun Nehra. Вы могли бы получить список рендеринга и найти тот, который соответствует текущему, и сделать -1. Конечно, это предполагает, что ваш порядок визуализации никогда не изменится, возможно, более приятное решение. – Anicho

ответ

0

Из-за невозможности вызывать RenderRendering конвейер отдельно для каждого рендеринга в заполнителе.

Я сделал это по overriding placeholder control и разрешил передавать дополнительные параметры через placeholder.

например.

@Html.SitecoreExtended().Placeholder("extendedForRendering", new {ExampleRouteValue1 = "Sitecore MVC Placeholder with rendering view"}) 

В этом случае мне удалось передать требуемые параметры через заполнители из родительского представления в дочерний.

0

Как Антон упомянул вы не можете получить родительский рендеринг, но тем не менее, вы можете получить список всех визуализаций на текущей странице следующим образом:

var pageContext = Sitecore.Mvc.Presentation.PageContext.CurrentOrNull; 
if(pageContent!=null) 
    var renderings = pageContext.PageDefinition.Renderings; 

После того, как у вас есть визуализации вы можете посмотреть значение заполнителей, параметры и т. д. Другая возможность, не уверенный, что это работает для вас, состоит в том, что из текущего контекста рендеринга вы всегда можете получить рендеринг детей. Надеюсь, это помогло.

0

Видение как визуализация Сначала выполняется код, возможно ли добавить параметры рендеринга в сеанс/кеш? а затем получить доступ к нему в Rendering B?