Rendering - WebUserControl (ascx)

Dersom det skal legges inn kode i en rendering må en benytte en WebUserControl (ascx). Her er informasjon om noen av mulighetene en har.

Når en setter opp en rendering som WebUserControl har en alle de mulighetene som ligger i en vanlig WebUserControl, og kan dermed velge om en vil jobbe med innholdet i CodeBehind eller rett i html.
Her er et Example på en rendering hvor innholdet hentes rett ut i html via er-tagger:

<%@ Control Language="C#" AutoEventWireup="true" Inherits="eR2UserControl" %>
<%@ Import Namespace="eR2" %>
<article class="page-article-no-media">
    <header>
        <er:value field="title" runat="server" tag="h1" />
    </header>
    <er:value Field="teaser" runat="server" Tag="div" class="teaser" SimpleEditor="true" AddLineBreaks="true" />
    <er:include RenderingName="Element.Facts.ascx" runat="server" />
    <er:value Field="Text" runat="server" Tag="div" />
</article>

Søk gjerne opp egne artikler for de ulike taggene og hva de gjør.

Det er også mulig bruke kode for å hente ut verdier:

<%@ Control Language="C#" AutoEventWireup="true" Inherits="eR2UserControl" %>
<%@ Import Namespace="eR2" %>
<article class="page-article-no-media">
        <h1><%:E("Title") %></h1>
        <%if (HasValue("Thumbnail"))
              { %>
        <img alt="<%:CurrentItem.Title %>" src='<%=CurrentItem.Thumbnail %>?h=320&amp;w=200' />
        <%} %>
        <%if (HasValue("Teaser")) { %><p class="teaser"><%:CurrentItem.Teaser.Replace("\n","<br />") %></p><%} %>
        <%=E("attributt")  %>
        <%=CurrentItem.Text %>
</article>

For designere kan en legge merke til at noen verdier hentes ut med <%= mens andre hentes ut med <%:. Forskjellen er at = henter ut verdien slik den er skrevet inn, mens : gjør verdien om til html. I utviklingsverktøyet i eRedaktør ligger alle disse kodene ferdig inne, det gjelder også kode for å sjekke om en verdi finnes.

Tagger for å hente ut verdier

Som du ser i Exampleet over, finnes det ferdige tagger som kan brukes for å hente ut verdier i renderingen. Disse har også funksjonalitet for å kunne redigere nettsiden i designmodus, pluss mange parametre som kan settes for å justere og tilpasse innholdet etter behov. Et Example på en slik tag er <er:value />. Denne brukes for å skrive ut en tekst-verdi, slik som tittel og ingress. En må angi at serveren skal kjøre taggen, og hvilket felt verdien skal hentes fra. <er:value runat="server" field="title" /> for Example. Det finnes tagger for blant annet bilder og lenker også.

CurrentItem

CurrentItem er det åpnede elementet vi har å forholde oss til. I Visual Studio kan du få hjelp av intellisense dersom du har installert eRedaktør run-time. Det vil si en versjon av eRedaktør som kan brukes til utvikling lokalt. Les ellers mer om CurrentItem i egen artikkel.

For å hente ut en verdi fra et felt eller et attributt med navnet på feltet eller navnet på attributtet, kan en benytte seg av f.eks. CurrentItem.GetValue("title"). Denne er også forkortet slik at en kun trenger å skrive E("title").

For å sjekke om et felt har verdi kan en skrive CurrentItem.HasValue("title"). Denne er også forkortet slik at en kun trenger å skrive HasValue("title").

LayoutItem

Dette er ikke i bruk i kodeExampleet over, men brukes på tilsvarende måte som CurrentItem, bare at det er verdier fra nettstedsoppsettet som hentes ut.

Arv og namespace

Informasjon til utviklere: Som du ser i linje 1 i koden over, så arver vi fra eR2UserControl. Det gir oss tilgang til CurrentItem, LayoutItem etc. I tillegg importerer vi namespace eR2 for å få tilgang til funksjonalitet som ligger her.