私の見解では、私は次の電話をかけています。
_<%= Html.EditorFor(x => x.Cost) %>
_
コストを定義する次のコードを持つViewModelがあります。
_public decimal Cost { get; set; }
_
ただし、これにより、小数点以下4桁の小数点値が表示されます(例:0.0000)。この問題を解決しているように見えるDecimal.toString("G")
( [〜#〜] msdn [〜#〜] )を知っていますが、どこに適用するかわかりません。
1つの解決策は、部分ビュー「Currency.aspx」を作成することのようです。
_<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Decimal>" %>
<%= Html.TextBox(Model.ToString("g"), new { @class = "currency" }) %>
_
そして、私のViewModelの[UIHint("Currency")]
。
これはエレガントではないようです。この問題はMVCフレームワークまたはC#のどこかできちんと解決されていると思いますが、よりクリーンな解決策を知りません。
MVCで通貨値の編集を処理する適切な方法は何ですか?
[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
public decimal Cost { get; set; }
そしてあなたの見解では:
<%= Html.EditorFor(x => x.Cost) %>
それだけです。
おそらく、カスタムCSSクラスを適用することをお勧めします。あなたはこれを行うことができます:
<div class="currency">
<%= Html.EditorFor(x => x.Cost) %>
</div>
そしてあなたのCSSに持っています:
.currency input {
/** some CSS rules **/
}
または カスタムDataAnnotationsModelMetadataProviderを作成 これにより、次のことが可能になります。
[DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
[HtmlProperties(CssClass = "currency")]
public decimal Cost { get; set; }
そしてあなたの見解では:
<%= Html.EditorFor(x => x.Cost) %>
EditorForテンプレートを使用している場合、これは適切な方法です。
「過度にエレガントでない」とはどういう意味ですか?