2012-01-25 14 views
0

でクラスをデシリアライズ。 変数stepにはpost varが入ります。ASP.net MVCは文句を言わない私はこのコントローラを持っているのHTTP POST

私は他のクラスが正しくデシリアライズされていますが、このクラスはデシリアライズされません。 これはクラスである:

public class GlobalOnBoardingDataModel : BaseStepDataModel 
    { 
     public string Email = string.Empty; 
     public string FirstName = string.Empty; 
     public string LastName = string.Empty; 
     public string PhoneAreaCode = string.Empty; 
     public string PhoneCountryCode = string.Empty; 
     public string PhoneNumber = string.Empty; 
     public string CountryShortName = string.Empty; 
     public string AccountCurrency = string.Empty; 
     public float InitialDepositAmount = 0; 
     public string Address = string.Empty; 
     public string City = string.Empty; 
     public string State = string.Empty; 
     public string DateOfBirth = string.Empty; 
     public string CreditCardNumber = string.Empty; 
     public string CreditCardExperationDate = string.Empty; 
     public bool RiskDisclosure = false; 
     public bool Beneficiary = false; 
     public string CVVNumber = string.Empty; 
     public bool Subscribe = false; 
    } 

ところで、VARの場所が他のケースでの作業の問題、seccond場所ではありません。

編集 これらは(クロムの)値である。

step:one 
FirstName:kjh 
LastName: 
CountryShortName:IL 
PhoneNumber: 
PhoneAreaCode: 
PhoneCountryCode: 
Email:[email protected] 

おかげ

+1

Fiddler2(http://fiddler2.com/fiddler2/)などを使用してHTTP POSTの本文を含めることはできますか? –

+1

サーバーに投稿または設定されるデータとは何ですか? – Lucero

答えて

2

ポスト本体が正しいと仮定します。フィールドを書き換えてpublic get/setプロパティに変換する必要があります。

MVCはフィールドへのバインドをモデル化しません。

メンバーにデフォルト以外のデフォルトを設定したいので、デフォルトのctorを使用して、構築時にプロパティのデフォルトを設定することができます。私が代わりに自動実装プロパティを使用しないアプローチを好むだろうが:現実に

private string _email = string.Empty; 
public string Email { get { return _email; } set { _email = value } } 

を、私は、実行時にほとんど差がありますと仮定 - しかし、あなたは、コンストラクタのアプローチを使用している場合は、新しいを追加し忘れることは非常に簡単です新しいプロパティを追加するときはデフォルト値になります。

MVCは結局、System.ComponentModel.TypeDescriptorクラスを使用して最終的にフィールドにバインドしません。これは、バインドするモデルプロパティを識別するためのメタデータを取得するためです。これはバグではありませんが、設計通りであり、モデルタイプの記述に使用する能力を反映する以外のメカニズムを有効にするため、良い設計選択です。

+0

ありがとう、どうしてnull例外を避けるためにデフォルト値を設定するのですか?コンストラクタを介して? – SexyMF

+1

明示的なバッカーを使用してください: 'private string _email = string.Empty; public string Email {get {return _email; } set {_email = value}} ' –

関連する問題