Ich aktualisiere meine alten ASPX-Ansichten mit der neuen Razore-Ansichts-Engine. Ich habe eine Reihe von Stellen, an denen ich Code wie diesen habe:
<span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span>
Idealerweise möchte ich dies tun:
<span class="vote-up@{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span>
Hier gibt es jedoch zwei Probleme:
vote-up@{puzzle.UserVote
.... behandelt das @ -Symbol nicht als Start eines Codeblocks@puzzle.UserVote == VoteType.Up
sieht den ersten Teil@puzzle.UserVote
so an, als ob er den Wert der Variablen rendern soll.
Weiß jemand, wie man diese Probleme angeht?
@(puzzle.UserVote == VoteType.Up ? "-selected" : "")
@(isSomething ? "class='test'" : "")
B. das Einfügen von Javascript oder ähnlichem, diese als Entitäten wie'
und die Seite brechen. Also musst du verwendenHtml.Raw("..")
. Andernfalls würden Sie mit dem obigen Code etwas<p class='test'>
Ungültiges erhalten.Antworten:
Das sollte funktionieren:
quelle
Der Schlüssel besteht darin, den Ausdruck in Klammern nach dem @ -Trennzeichen zu kapseln. Sie können jeden zusammengesetzten Ausdruck auf diese Weise arbeiten lassen.
quelle
quelle
In den meisten Fällen funktioniert die Lösung von CD .. einwandfrei. Ich hatte jedoch eine etwas verdrehte Situation:
Dies würde mich "& nbsp;" auf meiner Seite jeweils die Quelle generieren
&nbsp;
. Jetzt gibt es eine Funktion, mitHtml.Raw(" ")
der Sie Quellcode schreiben können, außer in dieser Konstellation wird ein Compilerfehler ausgegeben:Also schrieb ich eine Aussage wie die folgende, die weniger schön ist, aber auch in meinem Fall funktioniert:
Hinweis: Interessant ist, dass Sie einen Razor-Block neu starten müssen, sobald Sie sich in der geschweiften Klammer befinden.
quelle
@(String.IsNullOrEmpty(Model.MaidenName) ? Html.Raw(" ") : Model.MaidenName)
@(String.IsNullOrEmpty(Model.MaidenName) ? Html.Raw(" ") : Html.Raw(Model.MaidenName))