Mise en forme de la monnaie à l'aide du modèle d'affichage en MVC
J'ai trouvé ce post sur l'Affichage et EditorTemplates pour MVC:
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
Il crée un modèle d'affichage pour afficher facilement une virgule formaté avec change de signe.
Le modèle utilisé dans l'exemple:
public class TestModel
{
public decimal Money { get; set; }
}
Le modèle d'affichage:
Views/Shared/DisplayTemplates/décimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
Dans mon site web, j'ai une classe d'assistance avec une méthode pour récupérer formaté la monnaie chaîne à partir d'une virgule, donc je voudrais remplacer le ci-dessus avec quelque chose comme:
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
Et enfin le point de vue où nous voulons afficher la mise en forme de la monnaie:
@model TestModel
@Html.DisplayFor(e => e.Money)
De sortie:
<span class="currency">$3.50</span>
Je peut mettre en œuvre sans aucun problème. Mais bien sûr, j'ai différents points de vue où je veux afficher une formaté de la monnaie. Mais dans certains cas, je ne veux pas afficher le symbole de devise.
Ma question maintenant est de savoir comment je doit mettre en œuvre cette petite variation sans trop exagéré dans le code.
Voici mon actuel de mise en œuvre:
J'ai changé mon modèle d'affichage:
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
Bien sûr, j'ai aussi changé de GetCurrencyString méthode d'accepter cet attribut supplémentaire.
De mon point de vue, j'ai maintenant de fournir cet attribut:
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
Donc en fait j'ai tout fonctionne comme il devrait fonctionner. Mais de toute façon je n'aime pas cette solution qui permet d'avoir une vue plus complexe.
Ma question pour vous: Est-il une autre méthode pour mettre en place quelque chose comme ça? Ou les conseils d'possible d'optimiser ma solution?
Merci!
OriginalL'auteur ThdK | 2013-06-03
Vous devez vous connecter pour publier un commentaire.
Comment sur
HtmlHelper
qui vérifie laViewData["woCurrency"]
automatiquement et renvoie le résultat correct?Alors:
Vous pouvez définir
ViewData
dans lecontroller
.Oui, je sais, mais alors il aurait la même valeur pour toutes les devises, je veux le format de l'affichage actuel. J'ai un viewmodel représentant une ligne dans le panier. L'une des propriétés est un décimal Prix. Pour la plupart des lignes que je ne veux pas d'une monnaie de signer, pour les sous-totaux et le total des lignes, je ne veux montrer le symbole de devise. Cependant, les deux lignes d'utiliser le même objet (viewmodel) pour stocker leurs valeurs.
Est votre
ViewModel
contient unSubTotal
etTotal
propriétés?Oui, cela allait être ma prochaine étape.
OriginalL'auteur haim770
Vous avez besoin d'appliquer DisplayFormat attribut de l'Argent à votre propriété. Par exemple:
Pour plus d'informations, jetez un oeil à ces deux liens:
OriginalL'auteur Husein Roncevic