Die Syntax von mailworx Razor Vorlagen
Alle mailworx-spezifischen Methoden und Eigenschaften werden über die Basisklasse „Model
“ aufgerufen.
Zusätzlich besteht auch die Möglichkeit, sämtliche Basis-Funktionen von C# zu verwenden.
Übersicht des Models:
Model. |
Campaign |
– | Kampagnendaten |
Subscriber |
– | Empfängerdaten | |
Sections |
– | Abschnittsdaten | |
Editor |
– | Editor-Funktionen | |
Template |
– | Vorlagendaten und Hilfsfunktionen | |
Utilities |
– | Hilfsfunktionen |
Allgemein
Model.IsWebVersion
Rückgabewert:
bool
Gibt an, ob die Kampagne gerade im Browser geöffnet ist.
@if(Model.IsWebVersion) {
...
}
Model.IsInEditMode
Rückgabewert:
bool
Gibt an, ob sich die Kampagne aktuell im Bearbeitungsmodus (Kampagneneditor) befindet.
Empfohlen ist hier ein Tabellenkonstrukt, um den Newsletter zu erzeugen und eine maximale Breite festzulegen.
@if (Model.IsInEditMode)
{
@Raw("<table width="600" border="0" cellpadding="0" cellspacing="0" align="center"><tr><td>")
}
...
@if (Model.IsInEditMode)
{
@Raw("</td></tr></table>")
}
Model.IsTestmail
Rückgabewert:
bool
Diese Eigenschaft liefert True
, wenn die Kampagne als Testmail versendet wird, an eine Testgruppe versendet wird, im Editiermodus oder im Newsletterarchiv geöffnet wird. Bei Echt-Aussendungen wird False
gesetzt, außer der Empfänger wird gelöscht, dann wird die Personalisierung des Vorschauempfängers verwendet und die Kampagne als Testmail gewertet.
@if(Model.IsTestmail) {
...
}
Model.IsForwardedMail
Rückgabewert:
bool
Diese Eigenschaft liefert True
, wenn die Kampagne weitergeleitet wurde.
@if(Model.IsForwardedMail) {
...
}
Kampagnen
Model.Campaign.Name
Rückgabewert:
string
Liefert den Namen der Kampagne.
<div>
@Raw(Model.Campaign.Name)
</div>
Model.Campaign.Id
Rückgabewert:
Guid
Liefert die eindeutige ID der Kampagne.
<div>Die eindeutige ID der Kampage: @Raw(Model.Campaign.Id.ToString())</div>
Model.Campaign.Subject
Rückgabewert:
string
Liefert den eingegebenen Betreff der Kampagne oder die Betreffvarianten, welche im A/B-Split-Test für die aktuelle Versendung vorgesehen sind.
<head>
<title>@Raw(Model.Campaign.Subject)</title>
</head>
Model.Campaign.SenderAddress
Rückgabewert:
string
Liefert die Absenderadresse der aktuellen Kampagne.
<div>Diese Kampagne wurde von der Adresse @Raw(Model.Campaign.SenderAddress) versendet.</div>
Model.Campaign.SenderName
Rückgabewert:
string
Liefert den Absendernamen der aktuellen Kampagne.
<div>Diese Kampagne wurde von @Raw(Model.Campaign.SenderName) versendet.</div>
Model.Campaign.ShowTableOfContents
Rückgabewert:
bool
Gibt an, ob das Inhaltsverzeichnis in dieser Kampagne über die Option „Inhaltsverzeichnis anzeigen“ in den Eigenschaften der Kampagne angezeigt werden soll.
<p>@if(Model.Campaign.ShowTableOfContents) {<br> <table cellpadding="0" cellspacing="0" border="0"><br> @foreach(var sec in Model.Sections.NonSingletonSections) {<br> switch(sec.DefinitionKey) {<br> case "article":<br> <tr><br> <td>@sec.GetValue("template_field_for_article_headline")</td><br> </tr><br> break;<br> case "teaser":<br> <tr><br> <td>@sec.GetValue("template_field_for_teaser_headline")</td><br> </tr><br> break;<br> }<br> }<br> </table><br>}</p>
Model.Campaign.ShowChangeProfile
Rückgabewert:
bool
Gibt an, ob der „Daten ändern“-Button in der Kampagne zu sehen sein soll oder nicht.
Model.Campaign.ShowForward
Rückgabewert:
bool
Gibt an, ob der „Weiterleiten“-Button in der Kampagne zu sehen sein soll oder nicht.
Model.Campaign.ShowUnsubscribe
Rückgabewert:
bool
Gibt an, ob der „Abmelden“-Button in der Kampagne zu sehen sein soll oder nicht.
Model.Campaign.ShowAnyButton
Rückgabewert:
bool
Gibt an, ob einer der folgenden Buttons angezeigt werden soll, um das Umgebungs-HTML-Konstrukt auszublenden, wenn keine Buttons angezeigt werden sollen.
@if(Model.Campaign.ShowAnyButton) {
<table cellpadding="0" cellspacing="0" border="0">
<tr>
@if(Model.Campaign.ShowChangeProfile) {
<td>@Raw(Model.Template.GetChangeProfileLink("Daten ändern"))</td>
}
@if(Model.Campaign.ShowForward) {
<td>@Raw(Model.Template.GetForwardLink("Weiterleiten"))</td>
}
@if(Model.Campaign.ShowUnsubscribe) {
<td>@Raw(Model.Template.GetUnsubscribeLink("Abmelden"))</td>
}
</tr>
</table>
}
Model.Campaign.ChangeProfileId
Rückgabewert:
Guid
Liefert die ID des Formulars, welches als Daten-Änderungs-Formular ausgewählt ist.
<div>Die eindeutige ID des Daten Änderungs-Formulars: @Raw(Model.Campaign.ChangeProfileId.ToString())</div>
Model.Campaign.CreatedDate
Rückgabewert:
DateTime
Liefert das Erstellungsdatum der Kampagne.
...
<td>@Model.Campaign.CreatedDate.ToString("dd.MM.yyyy")</td>
...
Model.Campaign.ShortCulture
Rückgabewert:
string
Liefert die Sprache der Kampagne im 2-Zeichen-Sprachen-Format zurück. Hier die gängigsten Beispiele: de, en, fr, es, …
switch(Model.Campaign.ShortCulture) {
case "de":
...
break;
case "en":
...
break;
}
Model.Campaign.SendType
Rückgabewert:
Eworx.Mailworx.Architecture.Infrastructure.SendType
Gibt den Versende-Typ der aktuellen Kampagne zurück, um im Template darauf reagieren zu können.
switch(Model.Campaign.SendType) {
case Eworx.Mailworx.Architecture.Infrastructure.SendType.Manual:
<div>Diese Kampagne wird Manuell versendet.</div>
break;
case Eworx.Mailworx.Architecture.Infrastructure.SendType.EventDependent:
<div>Diese Kampagne wird als Ergeignis einer Aktion versendet.</div>
break;
case Eworx.Mailworx.Architecture.Infrastructure.SendType.ABSplit:
<div>Diese Kampagne wird als A/B Split Test versendet.</div>
break;
}
Empfänger
Model.Subscriber.IsOptIn
Rückgabewert:
bool
Gibt an, ob der Empfänger angemeldet ist oder nicht.
Model.Subscriber.OptOutDate
Rückgabewert:
DateTime?
Gibt den Zeitpunkt an, seit dem der Empfänger abgemeldet ist. Wenn der Abonnent angemeldet ist, liefert diese Eigenschaft null.
Model.Subscriber.LastProfileChange
Rückgabewert:
DateTime?
Gibt den Zeitpunkt der letzten Aktualisierung der Empfängerdaten an. Wurden die Daten des Abonnenten noch nie aktualisiert, liefert diese Eigenschaft null.
Model.Subscriber.Mailformat
Rückgabewert:
Eworx.Mailworx.Architecture.Infrastructure.Mailformat
Gibt das Mailformat des Empfängers an.
switch(Model.Subscriber.Mailformat) {
case Eworx.Mailworx.Architecture.Infrastructure.Mailformat.Multipart:
...
break;
case Eworx.Mailworx.Architecture.Infrastructure.Mailformat.HTML:
...
break;
case Eworx.Mailworx.Architecture.Infrastructure.Mailformat.Text:
...
break;
}
Model.Subscriber.Id
Rückgabewert:
Guid
Gibt die ID des Empfängers zurück.
Model.Subscriber.AccountId
Rückgabewert:
Guid
Gibt die ID des Mandanten zurück, welchem der Abonnent zugewiesen ist.
Model.Subscriber.ShortCulture
Rückgabewert:
string
Liefert die Sprache des Empfängers im 2-Zeichen-Sprachen-Format zurück. Hier die gängigsten Beispiele: de, en, fr, es, …
switch(Model.Subscriber.ShortCulture) {
case "de":
...
break;
case "en":
...
break;
}
Model.Subscriber.GetValue(string fieldName)
Rückgabewert:
string
Liefert den Wert des Feldes mit dem internen Namen „fieldName
“ zurück.
...
<td>
Ihre E-Mail Adresse lautet @Raw(Model.Subscriber.GetValue("email"))
</td>
...
<td>
Ihre E-Mail Adresse lautet max.mustermann@firma.at
</td>
Abschnitt
Model.Sections.GetSingletonValue(string fieldName)
Rückgabewert:
string
Liefert den eingegebenen Wert des Feldes mit dem internen Namen „fieldName
„, welcher in einem nicht wiederholbaren Abschnitt eingegeben wurde.
Alle Felder von nicht wiederholbaren Abschnitten sind überall in der Vorlage verfügbar und dürfen nur einmal existieren, doppelte Felder in einer Vorlage führen zu Fehlverhalten.
...
<td>
Hier steht der Wert des Feldes "li_preheader": @Raw(Model.Sections.GetSingletonValue("li_preheader"))
</td>
...
Model.Sections.GetAttributeOfSingletonImageValue(string fieldName, string attribute)
Rückgabewert:
string
Liefert den eingegebenen Wert des Attributs des Bild-Feldes mit dem internen Namen „fieldName
„, welcher in einem nicht wiederholbaren Abschnitt eingegeben wurde.
Folgende Attribute von einem Bild können abgefragt werden:
width
height
src
alt
...
<td>
@Raw(Model.Sections.GetAttributeOfSingletonImageValue("li_image", "width"))
</td>
...
Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection.GetValue(string fieldName)
Rückgabewert:
string
Liefert den eingegebenen Wert des Feldes mit dem internen Namen „fieldName“, welcher in einem wiederholbaren Abschnitt eingegeben wurde.
Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection.GetAttributeOfImageValue(string fieldName, string attribute)
Rückgabewert:
string
Liefert den eingegebenen Wert des Attributs des Bild Feldes mit dem internen Namen „fieldName“, welcher in einem wiederholbaren Abschnitt eingegeben wurde.
Folgende Attribute von einem Bild können abgefragt werden:
width
height
src
alt
Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection.DefinitionKey
Rückgabewert:
string
Gibt den Typennamen des Abschnitts zurück und dient zur Unterscheidung, welches Layout verwendet werden soll.
Model.Sections.GetSectionForSingletonField(string fieldName)
Rückgabewert:
Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection
Liefert den Abschnitt, in dem das Feld mit dem internen Namen „fieldName
“ enthalten ist.
Model.Sections.Sections
Rückgabewert:
List<Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection>
Gibt alle Abschnitte der aktuellen Kampagne als Liste zurück. Hier sind alle wiederholbaren und nicht wiederholbaren Abschnitte vorhanden.
@foreach(var sec in Model.Sections.Sections) {
...
}
Model.Sections.SingletonSections
Rückgabewert:
List<Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection>
Gibt alle nicht wiederholbaren Abschnitte der aktuellen Kampagne als Liste zurück.
@foreach(var sec in Model.Sections.SingletonSections) {
...
}
Model.Sections.NonSingletonSections
Rückgabewert:
List<Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection>
Gibt alle wiederholbaren Abschnitte der aktuellen Kampagne als Liste zurück. Diese Liste wird meistens verwendet, wenn keine Bereiche in der Vorlage definiert sind.
@if(Model.Campaign.ShowTableOfContents) {
<table cellpadding="0" cellspacing="0" border="0">
@foreach(var sec in Model.Sections.NonSingletonSections) {
switch(sec.DefinitionKey) {
case "article":
<tr>
<td>@sec.GetValue("template_field_for_article_headline")</td>
</tr>
<tr>
<td>@sec.GetAttributeOfImageValue("template_field_for_article_image", "src")</td>
</tr>
break;
case "teaser":
<tr>
<td>@sec.GetValue("template_field_for_teaser_headline")</td>
</tr>
break;
}
}
</table>
}
Model.Sections.GetSectionsOfType(string definitionKey)
Rückgabewert:
List<Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection>
Liefert alle Abschnitte des selben Typs „definitionKey
“ als Liste zurück.
<table cellpadding="0" cellspacing="0" border="0">
@foreach(var sec in Model.Sections.GetSectionsOfType("article")) {
<tr>
<td>@sec.GetValue("template_field_for_article_headline")</td>
</tr>
<tr>
<td>@sec.GetValue("template_field_for_article_text")</td>
</tr>
}
</table>
Model.Sections.GetSectionsOfArea(string areaName)
Rückgabewert:
List<Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection>
Liefert die Liste aller Abschnitt in dem Bereich „areaName
„. Wird benötigt, um verschiedene Inhaltsbereiche in einer Vorlage zu definieren.
<table cellpadding="0" cellspacing="0" border="0">
@foreach(var sec in Model.Sections.GetSectionsOfArea("Oben")) {
if(sec.DefinitionKey == "article") {
<tr>
<td>@sec.GetValue("template_field_for_article_headline")</td>
</tr>
<tr>
<td>@sec.GetValue("template_field_for_article_text")</td>
</tr>
}
}
</table>
Editor
Model.Editor.SectionStart(Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection section, string tagName, int tdColspan, int tableWidth)
Rückgabewert:
string
Startet im Editor den Anfang des bearbeitbaren Bereichs eines wiederholbaren Abschnitts. Hier werden die Schaltflächen zum Bearbeiten (Eigenschaften, kopieren, verschieben, …) des Abschnitts erstellt.
Der „tagName
“ ist der Name des ersten HTML Tags in dem Abschnitt.
„tdColspan
“ ist ein Optional-Parameter und gibt an, wieviel Colspan der erste HTML Tag (wenn es ein td Tag ist) hat. Standardwert ist 1, wenn nichts angegeben wird.
Der Parameter „tableWidth
“ kann benutzt werden, um der erzeugten Struktur eine Breite vorzugeben, da hier ansonsten ein fit-to-content-Verhalten ausgelöst wird.
@Raw(Model.Editor.GetAreaPlaceholder("", "table"))
@foreach (var sec in Model.Sections.NonSingletonSections) {
@Raw(Model.Editor.SectionStart(sec, "table"))
switch(sec.DefinitionKey) {
case "article":
<table>
...
</table>
break;
case "teaser":
<table>
...
</table>
break;
}
@Raw(Model.Editor.SectionEnd(sec, "table"))
}
Model.Editor.SectionEnd(Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection section, string tagName)
Rückgabewert:
string
Dient zum Beenden des editierbaren Bereichs des Abschnitts. Hier müssen nur der Abschnitt und der entsprechende Tag-Name angegeben werden.
Model.Editor.GetAreaPlaceholder(string areaName, string tagName)
Rückgabewert:
string
Definiert einen Bereich, in dem die Abschnitte eingefügt werden. Werden in der Vorlage keine Bereiche benötigt, muss der areaName leer gesetzt werden.
Werden mehrere Bereiche verwendet, dürfen sich diese nicht im selben Eltern-Element enthalten sein, da ansonsten das Einfügen und Sortieren der Abschnitte nicht korrekt funktioniert.
Model.Editor.GetEditor(string fieldName, Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection section)
Rückgabewert:
string
Anders als Model.Sections.GetSingletonValue & Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection.GetValue, welche nur zum Auslesen der Feldwerte dient, kann der Feldwert im Kampagnen Editor bearbeitet werden.
Je nach verwendetem Feldtyp wird ein Editor gestartet. Nicht alle verfügbaren Feldtypen können direkt im Editor mittels WYSIWYG bearbeitet werden. Unterstützt der Feldtyp das Editieren nicht, wird nur der Wert ausgelesen.
Wird kein Abschnitt oder null als zweiter Parameter übergeben, so versucht mailworx ein Feld mit dem internen Namen fieldName, aus den nicht wiederholbaren Abschnitten zu laden.
Folgende Typen unterstützen den WYSIWYG Editor:
- Text
- Notiz
- Bild
@Raw(Model.Editor.GetAreaPlaceholder("", "table"))
@foreach (var sec in Model.Sections.NonSingletonSections) {
@Raw(Model.Editor.SectionStart(sec, "table"))
switch(sec.DefinitionKey) {
case "article":
<table>
<tr>
<td>@Raw(Model.Editor.GetEditor("template_field_for_article_image", sec))</td>
</tr>
<tr>
<td>@Raw(Model.Editor.GetEditor("template_field_for_article_headline", sec))</td>
</tr>
<tr>
<td>@Raw(Model.Editor.GetEditor("template_field_for_article_text", sec))</td>
</tr>
</table>
break;
...
}
@Raw(Model.Editor.SectionEnd(sec, "table"))
}
Vorlage
Model.Template.CreateWebVersionLink()
Rückgabewert:
string
Generiert die URL, um die Kampagne im Browser anzuzeigen. Dieser Link ist personalisiert auf den jeweiligen Empfänger.
<a href="@Model.Template.CreateWebVersionLink()">Browseransicht</a>
Model.Template.GetTemplatePath(string resource)
Rückgabewert:
string
Erstellt die URL zur entsprechenden Resource im Template Verzeichnis.
Wird kein Parameter übergeben, so wird nur der Pfad zum Verzeichnis selbst ausgelesen.
<img src="@Model.Template.GetTemplatePath("logo.png")" />
<img src="@Raw(Model.Template.GetTemplatePath())logo.png" />
Model.Template.GetAppPath()
Rückgabewert:
string
Liefert die URL zu mailworx, hier wird die eingestellte Subdomain verwendet.
Model.Template.GetStaticLinkUrl(string internalStaticLinkName)
Rückgabewert:
string
Liefert die URL zum statischen Link in der Vorlage.
<a href="@Raw(Model.Template.GetStaticLinkUrl("staticlink"))">Statischer Link</a>
Model.Template.GetSectionAnchor(Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection section)
Rückgabewert:
string
Generiert einen Anker für den übergebenen Abschnitt.
@foreach (var sec in Model.Sections.NonSingletonSections) {
@Raw(Model.Template.GetSectionAnchor(sec))
...
}
Model.Template.GetAnchorToSectionStart(Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection section)
Rückgabewert:
string
Erstellt einen öffnenden a-Tag mit dem Anker zum übergebenen Abschnitt.
@if(Model.Campaign.ShowTableOfContents) {
<table cellpadding="0" cellspacing="0" border="0">
@foreach(var sec in Model.Sections.NonSingletonSections) {
switch(sec.DefinitionKey) {
case "article":
<tr>
<td>@Model.Template.GetAnchorToSectionStart(sec)<span>@sec.GetValue("template_field_for_article_headline")</span>@Model.Template.GetAnchorToSectionEnd()</td>
</tr>
break;
case "teaser":
<tr>
<td>@Model.Template.GetAnchorToSectionStart(sec)<span>@sec.GetValue("template_field_for_teaser_headline")</span>@Model.Template.GetAnchorToSectionEnd()</td>
</tr>
break;
}
}
</table>
}
Model.Template.GetAnchorToSectionEnd()
Rückgabewert:
string
Erstellt einen schließenden a-Tag für Model.Template.GetAnchorToSectionStart, da Razor öffnende sowie schließende Tags prüft und nicht kompilieren kann, wenn die Anzahl der öffnenden und schließenden Tags nicht übereinstimmt.
Model.Template.GetSectionAnchorHrefValue(Eworx.Mailworx.Administration.Templates.RazorTemplates.RazorSection section)
Rückgabewert:
string
Erstellt die URL für den Anker zum übergebenen Abschnitt.
@if(Model.Campaign.ShowTableOfContents) {
<table cellpadding="0" cellspacing="0" border="0">
@foreach(var sec in Model.Sections.NonSingletonSections) {
switch(sec.DefinitionKey) {
case "article":
<tr>
<td><a href="@Model.Template.GetSectionAnchorHrefValue(sec)" style="color:red;">@sec.GetValue("template_field_for_article_headline")</a></td>
</tr>
break;
case "teaser":
<tr>
<td><a href="@Model.Template.GetSectionAnchorHrefValue(sec)" style="color:red;">@sec.GetValue("template_field_for_teaser_headline")</a></td>
</tr>
break;
}
}
</table>
}
Model.Template.GetOpenTracker()
Rückgabewert:
string
Erstellt den Öffnungs- und Lesetracker für die Kampagne. Am besten wird der Tracker am Ende des Templates eingefügt.
ACHTUNG! Wenn dieser nicht im Template vorhanden ist, wird die Statistik falsch erstellt und mailworx kann nicht alle Reaktionen protokollieren.
...
@Raw(Model.Template.GetOpenTracker())
</body>
</html>
Model.Template.GetChangeProfileLink(string text)
Rückgabewert:
string
Erstellt den „Daten ändern“-Link (gesamter a-Tag) mit dem übergebenen Text.
@Raw(Model.Template.GetChangeProfileLink("meine Daten ändern"))
Model.Template.GetForwardLink(string text)
Rückgabewert:
string
Erstellt den „Weiterleiten“-Link (gesamter a-Tag) mit dem übergebenen Text.
@Raw(Model.Template.GetForwardLink("weiterleiten"))
Model.Template.GetUnsubscribeLink(string text)
Rückgabewert:
string
Erstellt den „Abmelden“-Link (gesamter a-Tag) mit dem übergebenen Text.
@Raw(Model.Template.GetUnsubscribeLink("abmelden"))
Model.Template.GetChangeProfileURL()
Rückgabewert:
string
Gibt den „Daten ändern“-Link zurück. Dieser muss händisch in einen a-Tag als href-Attribut angegeben werden.
@Raw(Model.Template.GetChangeProfileURL())
Model.Template.GetForwardURL()
Rückgabewert:
string
Gibt den „Weiterleiten“-Link zurück. Dieser muss händisch in einem a-Tag als href-Attribut angegeben werden.
@Raw(Model.Template.GetForwardURL())
Model.Template.GetUnsubscribeURL()
Rückgabewert:
string
Gibt den „Abmelden“-Link zurück. Dieser muss händisch in einen a-Tag als href-Attribut angegeben werden.
@Raw(Model.Template.GetUnsubscribeURL())
Werkzeuge
Model.Utilities.UrlEncode(string text)
Rückgabewert:
string
Konvertiert einen String für die Übertragung in einer URL.
@Raw(Model.Utilities.UrlEncode("Text"))
Model.Utilities.UrlDecode(string text)
Rückgabewert:
string
Konvertiert einen String aus einer URL zurück.
@Raw(Model.Utilities.UrlDecode("Text"))
Model.Utilities.ConvertColor(string color, char typ)
Rückgabewert:
float
Gibt den konvertieren Wert der übergebenen Farbe zurück. Die Farbe muss im Format #rrggbb, z.B.: #CC0000 übergeben werden.
Für den Parameter typ
muss ein Charakter übergeben werde.
- h
Farbton (Hue aus dem HSB Farbraum)
Mögliche Werte: 0.0 bis 360.0 (Farbton wird in Grad angegeben) - s
Sättigung (Saturation aus dem HSB Farbraum)
Mögliche Werte: 0.0 (Graustufe) bis 1.0 (volle Sättigung) - b
Helligkeit (Brightness aus dem HSB Farbraum)
0.0 (Schwarz) bis 1.0 (Weiß)
Kann eine Farbe nicht verarbeitet werden, da sie im falschen Format ist, liefert die Funktion -1
als Rückgabewert.
// Hue
@Raw(Model.Utilities.ConvertColor("#C30709", 'h').ToString())
// 359,3617
// Saturation
@Raw(Model.Utilities.ConvertColor("#C30709", 's').ToString())
// 0,9306931
// Brightness
@Raw(Model.Utilities.ConvertColor("#C30709", 'b').ToString())
// 0,3960784
// Invalid color
@Raw(Model.Utilities.ConvertColor("#farbe", 'b').ToString())
// -1
Razor
Die Razor Template Engine erfordert einen validen HTML Code. Das bedeutet, jeder geöffnete Tag muss folgerichtig geschlossen werden. Um dies zu umgehen, kann mit der Funktion @Raw(string)
ein HTML Code ausgegeben werden, der von der Validierung ausgeschlossen ist.
@Variablenname
Rückgabewert:
string
Gibt den Wert der Variable aus – allerdings werden HTML Tags encodiert.
@{
string VariableWithHtml = "<b>Text</b>";
}
<div>@VariableWithHtml</div>
<div><b>Text</b></div>
@Raw(string Variable)
Rückgabewert:
string
Gibt den Wert der Variable aus – HTML Tags werden nicht encodiert.
@{
string VariableWithHtml = "<b>Text</b>";
}
<div>@Raw(VariableWithHtml)</div>
<div><b>Text</b></div>
Helper
Helper können verwendet werden, um Codes wiederverwendbar zu machen. Dies ist zum Beispiel für Buttons hilfreich.
Helper ähneln Funktionen sehr. Es können individuelle Parameter übergeben und im Helper selbst darauf reagiert werden.
@helper MyHelper(string link, string text = "") {
if(!string.IsNullOrEmpty(link)) {
if(text == "") {
text = "Weiterlesen";
}
<a href="@Raw(link)" style="background:red;color:white;text-decoration:none;">@Raw(text)</a>
}
}
@MyHelper("http://www.mailworx.info")
<a href="http://www.mailworx.info" style="background:red;color:white;text-decoration:none;">Weiterlesen</a>
@MyHelper("http://www.mailworx.info", "Mein <b>Lieblings</b> EMS System")
<a href="http://www.mailworx.info" style="background:red;color:white;text-decoration:none;">Mein <b>Lieblings</b> EMS System</a>