0

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

4

2 回答 2

3

简单地说,您需要制定适当的开发流程,否则您将陷入困境!如果您还没有,请与 Sitecore 联系并确定您需要什么许可证才能启动并运行适当的开发环境。如果您是经过认证的开发人员,您可能有权获得开发实例。

现在,对于您的问题,您必须将逻辑放在某个地方。如果您无法修改代码隐藏、编译和部署,则需要将其放在 .ascx 中。你可以稍微修剪一下,我想...

<% if (Sitecore.Context.Item["Grades"] != "") { %><h2 class="edu">Timeframe</h2><% } %>
<sc:FieldRenderer runat="server" ID="mhTimeFrame" Fieldname="Timeframe" />
于 2012-04-09T20:05:04.243 回答
0

为了摆脱标记中的if-statement,您可以设置<h2 />元素的 visible 属性:

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

不过你需要一个开发环境;)

于 2012-04-09T20:25:35.290 回答