Визуализация пользовательских элементов управления в динамическом контенте EPIserver - PullRequest
2 голосов
/ 06 января 2012

Я пытаюсь создать динамический элемент управления содержимым EPIserver, который я хочу, это пользовательский элемент управления, который я уже создал (слайдер), кажется, что все работает нормально, пока я не вставлю элемент управления динамическим содержимым на страницу / область, которую яхочу использовать его.

Когда я сейчас перехожу на созданную мной страницу, она отображает «статическое» содержимое:

<h3>Dynamic slider</h3>
<TextBox runat="server" ID="txtTest" />
<cd:TopSlider runat="server" ID="MySlider"/>

из этих 3 элементов отображаются заголовок и текстовое поле, но не «cd: TopSlider», и в OnPageLoad я установил текст в TextBox на «FooBar», но он также не отображается, он показывает, что он никогда не идет на стороне сервера, я пытался разместить точки останова, но несрабатывает.,.

Вот код для файлов DynamicContent:

Пользовательский контроль, который загружается DynamicContentTest.ascx.cs:

public partial class DynamicContentTest : System.Web.UI.UserControl
    {
        public IEnumerable<SliderPage> DataSource { get; set; }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            txtTest.Text = "FooBar";

            MySlider.DataSource = DataSource;
            MySlider.DataBind();

        }
    }

DynamicContentTest.ascx:

<%@ Register TagPrefix="cd" TagName="TopSlider" Src="~/UserControls/TopSlider.ascx" %>
<!-- Slider -->
<h3>Dynamic slider</h3>
<asp:TextBox runat="server" ID="txtTest" />
<cd:TopSlider runat="server" ID="mySlider"/>
<!-- END Slider -->

DynamicContentControl:

[DynamicContentPlugIn(
        DisplayName = "Dynamic slider",
        Description = "Displays a slider",
        ViewUrl = "~/UserControls/DynamicContent/Custom/DynamicContentTest.ascx")]
    public class DynamicSliderControl : UserControlBase
    {
        public PageReference SlidesRoot { get; set; }

        public System.Web.UI.Control GetControl(EPiServer.PageBase hostPage)
        {
            var userControl = (UserControls.DynamicContent.Custom.DynamicContentTest)hostPage.LoadControl("~/UserControls/DynamicContent/Custom/DynamicContentTest.ascx");
            userControl.DataSource = SlidesRoot != null ?
                SlidesRoot.GetChildrenOfType<SliderPage>() : null;
            return userControl;
        }

        public bool RendersWithControl
        {
            get { return true; }
        }

        public string State { get; set; }
    }

Я использовал эти статьи в качестве руководства:

Создание динамического содержимого EPiServer с расширенными настройками

Создание простого динамического содержимого в EPiServer CMS 6 R2

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Используете ли вы EPiServer: элемент управления Свойством для рендеринга динамического содержимого?

Если вы не используете это, EPiServer не сможет перехватить динамическое содержимое и соответствующим образом отобразить его.

0 голосов
/ 11 января 2012

Мы используем конструктор типов страниц, поэтому нам все еще хотелось бы обойти EPiServer: свойство

В этом случае эта ссылка может вам помочь.

...