web-dev-qa-db-ja.com

通貨フォーマットMVC

Html.EditorForテキストボックスを通貨形式にフォーマットしようとしていますが、このスレッド TextBoxForの通貨のString.Format を基にしています。しかし、私のテキストは通貨のフォーマットなしで0.00として表示されます。

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

私がやっていることのためのコードがあります、そして、これはもちろん、エディターフィールドdiv内に含まれるWebサイト自体のそのフィールドのhtmlです。

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

どんな助けでも感謝します、ありがとう!

32
Ryguy

[DisplayFormat]属性でGoalAmountビューモデルプロパティを修飾できます。

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

そして、単にビューで:

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

EditorForヘルパーの2番目の引数は、考えていることをまったく行いません。追加のViewDataをエディターテンプレートに渡すことができます。これはhtmlAttributesではありません。

別の可能性は、通貨(~/Views/Shared/EditorTemplates/Currency.cshtml)のカスタムエディターテンプレートを記述することです。

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

その後:

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

または[UIHint]を使用します。

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

その後:

@Html.EditorFor(model => model.Project.GoalAmount)
70
Darin Dimitrov