znalazłem ten post o Wyświetlanie i EditorTemplates dla MVC:formatowanie waluty przy użyciu wyświetlacza szablon w MVC
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
Tworzy szablon wyświetlania łatwo wyświetlać po przecinku sformatowany ze znakiem waluty.
model stosowany w przykładzie:
public class TestModel
{
public decimal Money { get; set; }
}
Szablon display:
Views/Shared/DisplayTemplates/decimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
W mojej stronie mam pomocnika klasa z metodą pobierania sformatowanego ciągu znaków walutowych z części dziesiętnej, więc chciałbym zastąpić powyższe czymś takim jak:
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
I wreszcie pogląd gdzie chcemy zobaczyć sformatowaną walutę:
@model TestModel
@Html.DisplayFor(e => e.Money)
wyjściowa:
<span class="currency">$3.50</span>
mogę wdrożyć to bez żadnego problemu. Ale oczywiście mam różne poglądy, w których chcę zobaczyć sformatowaną walutę. Ale w niektórych przypadkach nie chcę pokazywać znaku waluty.
Moje pytanie brzmi teraz, jak powinienem wdrożyć tę niewielką odmianę bez zbytniej przesady w kodzie.
Oto moja aktualna realizacja:
Zmieniłem szablon wyświetlania to:
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
Oczywiście Ja również zmienił metody GetCurrencyString zaakceptować ten dodatkowy atrybut.
Moim zdaniem teraz mam dostarczyć ten atrybut też:
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
Tak właściwie, wszystko działa tak jak powinno działać. Ale jakoś nie lubię tego rozwiązania, które sprawia, że widok jest bardziej złożony.
Moje pytanie do Ciebie: Czy istnieje jakaś inna metoda wdrożenia czegoś takiego? Albo jakąś radę, by zoptymalizować moje obecne rozwiązanie?
Dzięki!
Dzięki za sugestię. Czy to oznacza, że zawsze muszę ustawić właściwość w widoku danych w widoku? Ponieważ mam wiele cen, które chcę pokazać w jednym widoku, ale nie wszystkie powinny pokazywać znak waluty. Kiedy zacząłem czytać o szablonach wyświetlania myślałem, że wszystko będzie o wiele łatwiejsze i czystsze, ale wygląda na to, że mnie oszukały :( – ThdK
Możesz również ustawić "ViewData" w "kontroler". – haim770
Tak, wiem, ale potem miałaby tę samą wartość dla każdej waluty, którą chcę sformatować w bieżącym widoku.Mam modeop reprezentujący linię w koszyku.Jedną z właściwości jest cena dziesiętna.Dla większości wierszy nie chcę znaku waluty, dla sumy częściowe i całkowite, chcę wyświetlać znak waluty, jednak obie linie używają tego samego obiektu (viewmodel) do przechowywania ich wartości: – ThdK