MVC3 поставляется из коробки с JsonValueProviderFactory (), который очень удобен для привязки входящего JSON к модели.К сожалению, я не могу понять, как настроить типовые контракты с именами, которые отличаются от входящего JSON.Например:
[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, свойства secret и expires привязываются правильно, а остальные - нет, поскольку имя свойства отличается от имени ключа json.Я ожидаю, что сериализатор datacontract попытается связать имя, указанное в атрибуте, но это не так.У кого-нибудь есть какие-нибудь обходные решения?
Редактировать
Пример использования этой модели:
public ActionResult Log(int? custId, FacebookSession response)
{
ViewBag.Id = response.UserId;
return View();
}