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. Я ожидал, что сериализатор контракта данных попытается выполнить привязку к имени, указанному в атрибуте, но, похоже, это не так. Есть ли у кого-нибудь предложения по обходному пути?
Изменить
Пример того, как я бы использовал эту модель:
public ActionResult Log(int? custId, FacebookSession response)
{
ViewBag.Id = response.UserId;
return View();
}