sitecore, если FieldRenderer не имеет значения, не отображать его - PullRequest
2 голосов
/ 05 января 2012

в Sitecore У меня есть созданный шаблон, в котором есть несколько FieldRenderers.В основном, иногда значение не заполняется, поэтому я хочу скрыть внутри него div, как бы я это сделал?

Ответы [ 3 ]

8 голосов
/ 05 января 2012

Это предполагает использование элемента контекста, но при необходимости измените ссылку на элемент:

В 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"]);
2 голосов
/ 06 апреля 2012

Я создал элемент управления специально для этой цели.По сути то же самое, что и ответ Марка, но без необходимости выделения кода.

<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/

Извините за бесстыдный штекер, но я думаю, что это может быть полезно.

2 голосов
/ 05 января 2012

Есть несколько способов, в зависимости от того, как часто вы собираетесь его использовать.

  1. Создайте пользовательский шаблонный элемент управления ( здесь учебник переходите прямо к построению серверного серверного элемента управления без привязки к базе данных) с именем CustomFieldRenderer, в который можно передать шаблон отображения. Если свойство возвращает пустое значение, вы можете скрыть весь элемент управления
  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);
...