在EPIserver动态内容中呈现用户控件

本文关键字:用户 控件 EPIserver 动态 | 更新日期: 2023-09-27 18:19:41

我正在尝试制作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 -->

动态内容控制:

[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 中创建简单的动态内容

在EPIserver动态内容中呈现用户控件

您是否使用EPiServer:Property控件来呈现动态内容?

如果你不使用这个,EPiServer就没有机会拦截动态内容并适当地渲染它。

我们使用页面类型生成器,所以我们仍然希望围绕EPiServer工作:属性

在这种情况下,此链接可能会对您有所帮助。