在Sitecore / ASP.NET中隐藏标题的更好方法

时间:2012-04-09 19:45:20

标签: c# asp.net sitecore

我正在使用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的情况下构建的,所以我想坚持一个范例,以便未来的开发人员能够理解这一点。

2 个答案:

答案 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();
}

然而,您需要一个开发环境;)