Währung formatieren mit display-Vorlage in MVC
Fand ich diesen Beitrag über Display und EditorTemplates für MVC:
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
Schafft es eine display-Vorlage, um einfach die Anzeige einer Dezimalstelle formatiert mit Währungszeichen.
Modell verwendet, im Beispiel:
public class TestModel
{
public decimal Money { get; set; }
}
Display template:
Views/Shared/DisplayTemplates/decimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
In meiner website habe ich eine helper-Klasse mit einer Methode auf, um eine formatierte Währung Zeichenfolge aus einer Dezimalzahl, so würde ich ersetzen, die oben mit etwas wie:
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
Und schließlich die Ansicht, wo wir wollen, um zu sehen, die formatierte Währung:
@model TestModel
@Html.DisplayFor(e => e.Money)
Ausgabe:
<span class="currency">$3.50</span>
Kann ich dies umsetzen, ohne jedes problem. Aber natürlich habe ich andere Ansichten, wo ich, wenn eine formatierte Währung. Aber in einigen Fällen, die ich nicht wollen, um zu zeigen, das Währungszeichen.
Meine Frage ist jetzt, wie ich das umsetzen dieser kleinen variation, ohne zu viel des guten im code.
Hier ist meine aktuelle Umsetzung:
Habe ich geändert mein display Vorlage zu diesem:
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
Natürlich habe ich auch geändert, um GetCurrencyString Methode zu akzeptieren, dieses zusätzliche Attribut.
Meiner Ansicht, die ich jetzt haben, um dieses Attribut zu:
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
So, ich habe tatsächlich alles so funktioniert wie es funktionieren sollte. Aber irgendwie ich weiß nicht, wie diese Lösung eignet sich auch, das macht die Ansicht komplexer.
Meine Frage an Euch: gibt es irgendeine andere Methode zu implementieren, die so etwas wie das? Oder eine Beratung zu möglichen Optimierung meiner aktuellen sollution?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa
HtmlHelper
haben, überprüft dasViewData["woCurrency"]
automatisch und gibt das richtige Ergebnis?Dann:
ViewData
imcontroller
als gut.ViewModel
enthält eineSubTotal
undTotal
Eigenschaften?Bewerben Sie sich DisplayFormat Attribut, um Ihr Geld zu Eigentum. Zum Beispiel:
Weitere Informationen haben Sie einen Blick auf diese beiden links: