[英]ASP.net MVC wont deserialize a class in http post
我有這個控制器:
public JsonResult Register(string step , GlobalOnBoardingDataModel data){}
MVC不會反序列化data
變量。 step
變量將post var變為它。
我有其他被反序列化的類很好,但是這個不會。 這是班級:
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;
}
BTW,var的位置不是問題,與其他情況一起工作的第二位。
編輯這些是值(來自chrome):
step:one
FirstName:kjh
LastName:
CountryShortName:IL
PhoneNumber:
PhoneAreaCode:
PhoneCountryCode:
Email:Test@test.com
謝謝
假設帖體是正確的; 您需要重寫字段並將其轉換為public get/set
屬性。
MVC不會模擬綁定到字段。
由於您希望成員具有非默認默認值; 你可以使用默認的ctor來設置構造的屬性默認值; 雖然我更喜歡不使用自動實現屬性的方法:
private string _email = string.Empty;
public string Email { get { return _email; } set { _email = value } }
實際上,我認為在運行時幾乎沒有什么區別 - 但是如果你使用構造函數方法,那么在添加新屬性時很容易忘記為它添加新的默認值。
MVC最終不會綁定到字段,因為它以循環方式使用System.ComponentModel.TypeDescriptor
類來獲取用於標識要綁定的模型屬性的元數據。 這不是一個錯誤,但它是設計上的並且是一個很好的設計選擇,因為它使除反射之外的機制能夠用於描述模型類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.