我正在尝试从中继器控件调用页面后面的代码,这是子布局中的实际操作。
问题
sc:fieldrenderer运行良好,并在页面源上呈现,但<%# method(data) %>似乎无法正常工作并打印页面源。
描述
我已经从这里下载了jQuery含量滑块包,它提供了拉链式建筑安装。
中继器的语法有点像这样
Sublayout (部分)语法
<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>Sublayout代码在中的应用
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的中继器<type>System.Web.UI.WebControls.Repeater</type>中评论和取消评论。
问题
如何解决问题在这里还是我应该改为中继器
ItemDataBound事件等等?
发布于 2013-04-16 09:54:28
国际海事组织,这种方式的数据是不好的设计。我要做的(如果您这样做一定会解决您的“问题”)是在中继器的FindControl事件中使用ItemDataBound,并将数据绑定到找到的控件。
与DIV元素不同,您可以使用asp:Panel控件并在其上设置Style属性(尽管我强烈建议您使用CSS类来保持其可维护性)
如果有人可以格式化这个答案,将不胜感激(使用移动设备)。
发布于 2013-04-16 12:48:48
我知道这一点已经被回答和接受了,但是你也有一个错误:
<# GetTextWidth(Container.DataItem) %>px; text-align:应该是
<%# GetTextWidth(Container.DataItem) %>px; text-align:https://stackoverflow.com/questions/16033677
复制相似问题