Pemformatan Mata Uang MVC

Saya mencoba memformat kotak teks Html.EditorFor untuk memiliki pemformatan mata uang, saya mencoba mendasarkannya dari utas ini https://stackoverflow.com/questions/6963497/string-format-for-currency-on-a-textboxfor. Namun, teks saya masih muncul sebagai 0.00 tanpa format mata uang.

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

Ada kode untuk apa yang saya lakukan, dan di sini adalah html untuk bidang itu di situs web itu sendiri yang terdapat di dalam div editor-bidang tentu saja.

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

Bantuan apa pun akan dihargai, terima kasih!

Larutan

Anda bisa menghias properti model tampilan GoalAmount Anda dengan atribut [DisplayFormat]:

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

dan dalam tampilan secara sederhana:

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

Argumen kedua dari helper EditorFor sama sekali tidak melakukan apa yang Anda pikirkan. Ini memungkinkan Anda untuk mengoper ViewData tambahan ke templat editor, bukan htmlAttributes.

Kemungkinan lainnya adalah menulis templat editor khusus untuk mata uang (~/Views/Shared/EditorTemplates/Currency.cshtml):

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

dan kemudian:

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

atau gunakan [UIHint]:

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

dan kemudian:

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