sitecore如果FieldRenderer没有值,则不显示它

时间:2012-01-05 11:54:08

标签: field sitecore

Sitecore中的

我有一个我创建的模板,它有一堆FieldRenderers。基本上有时候这个价值没有被填写,所以我想隐藏其中的div,我该怎么做呢?

3 个答案:

答案 0 :(得分:8)

这假设上下文项,但在您的方案中根据需要更改项目引用:

ascx

<asp:Panel ID="pnlMyField" runat="server">
  <sc:FieldRenderer FieldName="My Field" runat="server" />
</asp:Panel>

ascx.cs

pnlMyField.Visible = !string.IsNullOrEmpty(Sitecore.Context.Item["My Field"]);

答案 1 :(得分:2)

根据您使用它的频率,有几种方法。

  1. 创建一个名为CustomFieldRenderer的自定义模板化控件(here is a tutorial直接跳转到构建非数据绑定模板化服务器控件),您可以向其传递显示模板。如果属性返回空白,则可以隐藏整个控件
  2. 如果它仅用于单个页面,我会创建一个文字并从后面的代码中设置值
  3. html将是

    <asp:Literal Mode="PassThrough" runat="server" Id="SitecoreField">
    <div>{0}</div>
    </asp:Literal>
    

    背后的代码将是这样的

    string value = FieldRenderer.Render(Sitecore.Context.Item, "FieldName");
    SitecoreField.Visible = string.IsNullOrEmpty(value) == false;
    SitecoreField.Text = string.Format(SitecoreField.Text, value);
    

答案 2 :(得分:2)

我专门为此目的创建了一个控件。基本上与Mark的答案相同,但不需要代​​码隐藏。

<e:Enclosure runat="server">
  <div>
    <sc:FieldRenderer runat="server" FieldName="My Field" />
  </div>
</e:Enclosure>

现在,当FieldRenderer没有任何输出时,也不会显示div。 关于此的代码和更多解释可以在我的博客上找到:http://wensveen.wordpress.com/2011/05/27/toggling-boilerplate-html-visibility-in-asp-net/

抱歉无耻的插件,但我认为这可能会有所帮助。