サブレイアウトで実際にあるリピーター コントロールから、ページのコード ビハインド メソッドを呼び出そうとしています。
問題
はsc:fieldrenderer
正常に機能し、ページ ソースでレンダリングされますが、<%# method(data) %>
機能していないようで、ページ ソースにそのまま印刷されます。
説明
ここから sitecore パッケージをダウンロードしました - zip sitecore インストールを提供するSitecore jQuery Content Slider
そして、リピーターの構文はこのようなものです
サブレイアウト (部分) 構文
<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) %>
は、ページ ビハインド メソッドからの値に解決される必要があります。typesThatShouldNotBeExpanded
私は自分の方法を試しましたが、これを実行可能にすることはできません..リピーターのweb.configでコメントを付けたり、コメントを外したりしようとしました<type>System.Web.UI.WebControls.Repeater</type>
質問
ここで問題を解決するにはどうすればいいですか、それともリピーター
ItemDataBound
イベントなどに変更する必要がありますか?