Der folgende Code scheint nicht sauber zu sein. Irgendwelche Vorschläge zur Verbesserung des Codes?
<li @if(ViewData["pagename"].ToString()=="Business details"){ <text>class="active" </text> } >
<a @if(ViewData["pagename"].ToString()=="Business details"){ <text>style="color: white; background-color: #08C; border: 1px solid #08C;" </text> }
href="@Url.Action("BusinessDetails", "Business")">Business Details</a>
</li>
<li @if (ViewData["pagename"].ToString() == "Booking policies"){ <text>class="active"</text> }>
<a @if (ViewData["pagename"].ToString() == "Booking policies")
{ <text>style="color: white; background-color: #08C; border: 1px solid #08C;" </text> }
href="@Url.Action("BookingPolicies", "Business")">Booking policies</a>
</li>
asp.net-mvc
asp.net-mvc-3
razor
Mahesh
quelle
quelle
Antworten:
MVC verfügt über integrierte ...
Wenn @myClass null ist, wird das Attribut überhaupt nicht verwendet ...
Ich weiß, dass dies Ihr aktuelles Problem möglicherweise nicht ganz löst, aber es ist bemerkenswert!
http://weblogs.asp.net/jgalloway/archive/2012/02/16/asp-net-4-beta-released.aspx
quelle
htmlProperties
Objekt übergeben , dasselbe Null-Respekt-Verhalten zu erzielen ? Zum Beispiel möchte ich Attribut bedingt weitergebendisabled
, wie@Html.TextBoxFor(lambda, new { disabled = condition ? true : null })
, aber das macht immer noch ,disabled=""
wenndisabled
warnull
, die die gleiche wie rendring ist ,disabled="anything"
dadisabled
ist aktiv , wenn das Attribut vorhanden ist, unabhängig vom Wert. Gefunden stackoverflow.com/q/7978137/11683 zum Thema, aber es gibt bessere Möglichkeiten , heute frage ich mich?Sie sollten die Inline
style="..."
durch einen separaten Klassennamen ersetzen und dort dieselbe Syntax verwenden.Es wäre jedoch sauberer, eine separate HTML-Hilfserweiterungsmethode zu erstellen, die einen Seiten- und Aktionsnamen verwendet und den HTML-Code generisch generiert.
quelle
Ich verwende eine kleine Hilfsmethode, die bedingt ein Attribut hinzufügt, wenn der Wert nicht leer ist, und, falls definiert, wenn ein boolescher Funktionsausdruck Folgendes ergibt
true
:Einmal definiert, kann ich diese Methode in meinen Razor-Ansichten verwenden:
Der obige Code wird übertragen ,
<li class="new">...</li>
wennexample.isNew == true
, wenn nicht das gesamte weglassen wirdclass
Attribut.quelle
Func<bool>
Lambda werde ich einen einfachenbool?
Parameter bevorzugen , weil es einfacher ist:<li @Html.Attr("class", "new", example.isNew)>
In MVC4
oder
Weitere finden Sie hier: http://evolpin.wordpress.com/2012/05/20/mvc-4-code-enhancements/
quelle
Vorgehensweise mit der TagWrap-Erweiterungsmethode. Der Code für Ihre Frage würde folgendermaßen aussehen:
TagWrap-Erweiterungsmethoden
Hilfsklasse zum Rendern des schließenden Tags bei Dispose
quelle
Basierend auf Abtauungen beantworten Sie hier eine Anpassung, indem Sie eine
object
anstelle vonstring
:Auf diese Weise müssen Sie Ihre anderen Datentypen nicht in Zeichenfolgen umwandeln, bevor Sie sie übergeben, um eine Ansicht zu speichern
.ToString()
. Es gibt einen Unterschied : Wenn Sie eine leere Zeichenfolge übergeben, wird dies weiterhin gerendert. Zum Beispiel:quelle