在用户控件中引用父中继器控件的 DataItem

Nil*_*use 3 c# asp.net user-controls repeater

我需要将用户控件放入转发器控件的模板中,并从转发器的数据源中引用数据项。

我尝试过(忽略特定于我正在使用的 CMS 平台的第二个演员表):

<%# ((EPiServer.Core.PageData)((RepeaterItem)Container.Parent.NamingContainer).DataItem)["PageName"]%>
Run Code Online (Sandbox Code Playgroud)

但这会引发以下错误:无法将“ASP.usercontrols_searchcontrols_searchresult_ascx”类型的对象转换为“System.Web.UI.WebControls.RepeaterItem”

Searchresult_ascx 是另一个包含实际中继器的用户控件。

小智 5

我会在用户控件上添加一个属性来保存容器 - 像这样:

<asp:repeater ... >
  <my:usercontrol containerdata='<%# Container.DataItem %>' ... />
</asp:repeater>
Run Code Online (Sandbox Code Playgroud)

当然,在用户控件数据绑定到您正在传递的 PageData 项目中。