MVC3帶有JsonValueProviderFactory()方法,這對於將傳入的JSON綁定到模型非常方便。不幸的是,我無法弄清楚如何使用與傳入的JSON不同的名稱來設置模型合約。例如:DataContract模型綁定到ASP.NET MVC中的JSON Action方法參數
[DataContract(Name = "session")]
public class FacebookSession
{
[DataMember(Name = "access_token")]
public string AccessToken { get; set; }
[DataMember(Name = "expires")]
public int? Expires { get; set; }
[DataMember(Name = "secret")]
public string Secret { get; set; }
[DataMember(Name = "session_key")]
public string Sessionkey { get; set; }
[DataMember(Name = "sig")]
public string Signature { get; set; }
[DataMember(Name = "uid")]
public string UserId { get; set; }
}
路過時在JSON對象代表Facebook的會議上,性能和祕密綁定到期正確,但其餘的不要因爲屬性名稱是不是json的鍵名不同
。我期望datacontract序列化程序會嘗試綁定到屬性中提供的名稱,但似乎並非如此。有沒有人有任何解決方法建議?
編輯
的我怎麼會用這種模式的一個例子:
public ActionResult Log(int? custId, FacebookSession response)
{
ViewBag.Id = response.UserId;
return View();
}
確保你替換了默認的綁定:Application_Start:ModelBinders.Binders.DefaultBinder = new SmartModelBinder(new [] {new NewtonsoftJsonModelBinder()} );' – TodK 2012-03-16 14:51:07