2011-02-10 12 views
2

可能性の重複:
How to filter form data with custom model binderASP.NET MVC3では、通貨とパーセント値をモデルにバインドする最も簡単な方法は何ですか?

事前移入フィールド以下の単純なモデル/ビュー(すなわち、$ 250,000 & 75%)を作成、編集に所望のように。ただし、コントローラにポストバックするとき、プロパティは正しくバインドされません。

これらの文字列を人にやさしい形式からdecimalおよびfloatプロパティ値に変換する最も簡単な方法は何ですか?私のプロパティにある種のValueConverter属性を使用できますか?または、ModelBinderをフル実装する必要がありますか?

public class MyModel 
{ 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C0}")] 
    [Required] 
    [Display(Name = "My Money")] 
    public decimal Moo { get; set; } 

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:0%}")] 
    [Required] 
    [Display(Name = "Percentage of Awesomeness")] 
    public float PercentAwesome { get; set; } 
} 

私はMVCランタイムがdisplayFormatに属性の値を使用して自動的にそれを処理することができるだろうと間違って想定していました。

MVC初心者からおかげさまで、ありがとうございました!

答えて

2

カスタムモデルバインダーが必要です。ガイダンスについてはthis質問を参照してください。

+0

ブリリアント。 Amurraに感謝します。 – Jason

+0

mvc3では、リンクが指す解決策は機能しません。 – Jason

+1

これはそうですが。 [リンク](http://stackoverflow.com/questions/999791/decimal-values-with-thousand-separator-in-asp-net-mvc) – Jason