2012-05-24 25 views
29

Sto provando a formattare una casella di testo Html.EditorFor per avere la formattazione della valuta, sto cercando di basarla su questa discussione String.Format for currency on a TextBoxFor. Tuttavia, il mio testo appare ancora come 0.00 senza formattazione di valuta.Formattazione della valuta MVC

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

V'è il codice per quello che sto facendo, e qui è il codice html per il campo nel sito stesso contenuto all'interno l'editor-campo div naturalmente.

<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"> 

Qualsiasi aiuto sarebbe apprezzato, grazie!

risposta

65

Si potrebbe decorare la vostra proprietà modello GoalAmount vista con l'attributo [DisplayFormat]:

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

e nella vista semplice:

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

Il secondo argomento della aiutante EditorFor non fare a tutti cosa pensi che faccia. Permette di passare ViewData aggiuntivi al modello di editor, non è htmlAttributes.

Un'altra possibilità è quella di scrivere un editor di modelli personalizzati per la valuta (~/Views/Shared/EditorTemplates/Currency.cshtml):

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

e poi:

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

o utilizzare [UIHint]:

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

e quindi:

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

ha funzionato alla grande, grazie! :) –

+0

Qual è la stringa di formato per Valuta (sterline) senza penny? Non riesco a trovarlo fino ad ora. Grazie. – Doomsknight

+1

@Doomsknight, hai provato "" {0: C0} "'? –

Problemi correlati