我正在使用Sitecore,只是在ASP.NET中工作。我们没有开发服务器的第二个Sitecore许可证,所以我必须在网站上做一切现场直播(确认!),所以我试图避免使用代码支持,因为需要重新编译/ DLL插入
如果以下部分为空,我只是想隐藏一个部分标题。我想出了这个,这肯定有用,但看起来很笨重:
<% if (!string.IsNullOrEmpty(Sitecore.Context.Item.Fields["Grades"].ToString())) { %><h2 class="edu">Timeframe</h2><% } %>
<sc:FieldRenderer runat="server" ID="mhTimeFrame" Fieldname="Timeframe" />
有更简单的方法吗?
顺便说一句:我知道Sitecore可以使用XSLT模板,但我们的网站是在不使用XSLT的情况下构建的,所以我想坚持一个范例,以便未来的开发人员能够理解这一点。
答案 0 :(得分:3)
只是陈述显而易见的,你需要有适当的开发过程,否则你会遇到麻烦!如果您还没有,请与Sitecore交谈并找出您在许可方面需要的内容,以便启动和运行适当的开发环境。如果您是经过认证的开发人员,您可能有权获得开发实例。
现在,对于你的问题,你必须将逻辑放在某个地方。如果您无法修改代码隐藏,编译和部署,则需要将其放在.ascx上。你可以稍微调整一下......
<% if (Sitecore.Context.Item["Grades"] != "") { %><h2 class="edu">Timeframe</h2><% } %>
<sc:FieldRenderer runat="server" ID="mhTimeFrame" Fieldname="Timeframe" />
答案 1 :(得分:0)
为了摆脱标记中的if
- 语句,您可以设置<h2 />
元素的可见属性:
<h2 class="edu" runat="server" Visible='<%# Sitecore.Context.Item.Fields["Grades"] != null %>'>
Timeframe
</h2>
要启动并运行,您需要至少触发一次DataBinding:
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
然而,您需要一个开发环境;)