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

本文关键字:标题 更好 方法 隐藏 Sitecore ASP NET | 更新日期: 2023-09-27 18:30:37

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

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

显而易见的是,您需要制定适当的开发过程,否则您将陷入麻烦!如果您还没有,请与 Sitecore 联系,了解您需要哪些许可证才能启动并运行适当的开发环境。如果您是经过认证的开发人员,则可能有权使用开发实例。

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

<% if (Sitecore.Context.Item["Grades"] != "") { %><h2 class="edu">Timeframe</h2><% } %>
<sc:FieldRenderer runat="server" ID="mhTimeFrame" Fieldname="Timeframe" />

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

<h2 class="edu" runat="server" Visible='<%# Sitecore.Context.Item.Fields["Grades"] != null %>'>
  Timeframe
</h2>

若要启动并运行此功能,需要至少触发一次数据绑定:

protected void Page_Load(object sender, EventArgs e)
{
  Page.DataBind();
}

尽管如此,您仍然需要一个开发环境;)