Mise en forme de la monnaie MVC

j'essaie de formater un Html.EditorFor textbox pour avoir le formatage de devise, j'essaye de baser sur ce thread chaîne.Format pour les devises sur une boîte de texte pour . Cependant, mon texte apparaît toujours comme 0.00 sans formatage de devise.

<div class="editor-field">
        @Html.EditorFor(model => model.Project.GoalAmount, new { @class = "editor-     field", Value = String.Format("{0:C}", Model.Project.GoalAmount) })

il y a le code pour ce que je fais, Et voici le html pour ce champ dans le site web lui-même contenu dans l'éditeur-div de champ bien sûr.

<input class="text-box single-line valid" data-val="true" 
 data-val-number="The field Goal Amount must be a number." 
 data-val-required="The Goal Amount field is required."
 id="Project_GoalAmount" name="Project.GoalAmount" type="text" value="0.00">

Toute aide serait appréciée, merci!

29
demandé sur Community 2012-05-24 20:05:13

1 réponses

vous pouvez décorer votre propriété GoalAmount voir le modèle avec l'attribut [DisplayFormat] :

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
public decimal GoalAmount { get; set; }

et dans la vue simplement:

@Html.EditorFor(model => model.Project.GoalAmount)

le deuxième argument de L'EditorFor helper ne fait pas du tout ce que vous pensez qu'il fait. Il vous permet de passer des ViewData supplémentaires au modèle d'éditeur, ce n'est pas htmlAttributes.

une autre possibilité est d'écrire un modèle d'éditeur personnalisé pour la monnaie ( ~/Views/Shared/EditorTemplates/Currency.cshtml ):

@Html.TextBox(
    "", 
    string.Format("{0:c}", ViewData.Model),
    new { @class = "text-box single-line" }
)

et ensuite:

@Html.EditorFor(model => model.Project.GoalAmount, "Currency")

ou utiliser [UIHint] :

[UIHint("Currency")]
public decimal GoalAmount { get; set; }

et ensuite:

@Html.EditorFor(model => model.Project.GoalAmount)
67
répondu Darin Dimitrov 2012-05-24 16:08:10