36

Html.EditorFor テキストボックスをフォーマットして通貨のフォーマットを設定しようとしています。このスレッドString.Format for currency を TextBoxFor に基づいて作成しようとしています。ただし、私のテキストは、通貨の書式設定なしで 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">

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

74

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

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

そしてビューでは単純に:

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

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

もう 1 つの可能性は、通貨 ( ~/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)
于 2012-05-24T16:08:10.993 に答える