我正在尝试从子布局中实际的转发器控件调用页面的代码隐藏方法。
问题
sc:fieldrenderer
效果很好并在页面源上呈现,但似乎<%# method(data) %>
无法正常工作并按页面源上的方式打印。
描述
我已经从这里下载了 sitecore 包 - Sitecore jQuery Content Slider,它提供了zip sitecore 安装
而中继器语法有点像这样
子布局(部分)语法
<asp:repeater runat="server" id="repeater">
<itemtemplate>
<li>
<div style="background: url("
<%# GetImageUrl(Container.DataItem) %>); height:
<%# Height %>px;">
<div style="padding:"
<%# GetTopMargin(Container.DataItem) %>px 0px 0px
<%# GetLeftMargin(Container.DataItem) %>px; width:
<# GetTextWidth(Container.DataItem) %>px; text-align:
<%# GetTextAlignment(Container.DataItem) %>;">
<div class="title">
<sc:fieldrenderer fieldname="Title" item=''
<%# Container.DataItem %>' runat="server"></sc:fieldrenderer>
</div>
<div class="text">
<sc:fieldrenderer fieldname="Text" item=''
<%# Container.DataItem %>' runat="server"></sc:fieldrenderer>
</div>
<div class="link">
<sc:fieldrenderer fieldname="URL" item=''
<%# Container.DataItem %>' runat="server"></sc:fieldrenderer>
</div>
</div>
</div>
</li>
</itemtemplate>
</asp:repeater>
子布局代码后面
public string GetImageUrl(object itm)
{
Item item = (Item)itm;
ImageField image = item.Fields["Image"];
if (image != null)
{
MediaItem i = image.MediaItem;
if (i == null)
{
return string.Empty;
}
string u = Sitecore.Resources.Media.MediaManager.GetMediaUrl(i);
u = HttpUtility.UrlPathEncode(u);
return string.Concat("", u);
}
return string.Empty;
}
输出
<div style="background: url(<%# GetImageUrl(Container.DataItem) %>); height:<%# Height %>px;">
<div style="padding:"<%# GetTopMargin(Container.DataItem) %>px 0px 0px <%# GetLeftMargin(Container.DataItem) %>px; width: <# GetTextWidth(Container.DataItem) %>px; text-align:<%# GetTextAlignment(Container.DataItem) %>;">
<div class="title">
Untitled Item
</div>
<div class="text">
Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum
</div>
<div class="link">
<a title="Lorem-Ipsum">Learn about Lorem Ipsum</a>
</div>
</div>
</div>
预期产出
诸如此类的服务器标记<%# GetImageUrl(Container.DataItem) %>
应解析为来自 page behind 方法的值。我已经尝试了我的方法,但无法使这个可行..我什至尝试typesThatShouldNotBeExpanded
在 web.config 中为转发器评论和取消评论<type>System.Web.UI.WebControls.Repeater</type>
问题
如何解决这里的问题,或者我应该更改为转发器
ItemDataBound
事件等等?