2012-04-09 5 views
0

Ich benutze Sitecore und nur den Dreh raus in ASP.NET arbeiten. Wir haben keine zweite Sitecore-Lizenz für einen Entwicklungsserver, also muss ich alles live auf der Site machen (ack!), Deshalb versuche ich, mit Code-Hintern zu arbeiten, da ein Recompile/DLL-Einsatz notwendig ist .Bessere Möglichkeit, Titel in Sitecore/ASP.NET zu verstecken

Ich versuche nur einen Abschnitt Header zu verstecken, wenn der folgende Abschnitt leer ist. Ich habe mit dieser kommen, die auf jeden Fall funktioniert, aber es scheint ziemlich sperrig:

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

Gibt es eine einfache Möglichkeit, dies zu tun?

Übrigens: Ich bin mir bewusst, dass Sitecore XSLT-Vorlagen verwenden kann, aber unsere Website wurde ohne XSLT erstellt, daher möchte ich bei einem Paradigma bleiben, damit ein zukünftiger Entwickler einen Sinn daraus machen kann.

Antwort

3

Nur um das Offensichtliche zu sagen, müssen Sie einen ordnungsgemäßen Entwicklungsprozess an Ort und Stelle haben oder Sie werden in Schwierigkeiten geraten! Wenn Sie dies noch nicht getan haben, sprechen Sie mit Sitecore und finden Sie heraus, was Sie in Bezug auf Lizenzen benötigen, um eine ordnungsgemäße Entwicklungsumgebung zu erhalten. Wenn Sie ein zertifizierter Entwickler sind, haben Sie möglicherweise Anspruch auf eine Entwicklungsinstanz.

Nun zu Ihrer Frage, müssen Sie die Logik irgendwo setzen. Wenn Sie das Codebehind nicht ändern, kompilieren und implementieren können, müssen Sie es auf die ASCX-Datei setzen. Sie können es schneiden ein wenig nehme ich an ...

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

Um bis loszuwerden der if -Anweisung in Ihrem Markup, können Sie das sichtbare Attribut Ihres <h2 /> Element gesetzt:

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

um diese und läuft zu erhalten, müssen Sie das Databinding mindestens einmal auslösen:

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

Dennoch Sie eine Entwicklungsumgebung NEED;)

+0

Ich würde auch diesen Ansatz bevorzugen, aber wie Sie darauf hinwiesen, würde es erforderlich sein, 'DataBind()' aufzurufen. Während Sie dies vom Front-End-Bereich aus tun können, wissen wir nicht, ob es bereits im Code dahinter aufgerufen wird. –

Verwandte Themen