我有一个我创建的模板,它有一堆FieldRenderers。基本上有时候这个价值没有被填写,所以我想隐藏其中的div,我该怎么做呢?
答案 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)
根据您使用它的频率,有几种方法。
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/
抱歉无耻的插件,但我认为这可能会有所帮助。