MVC3 sale de la caja con JsonValueProviderFactory() que es muy útil para vincular el JSON entrante a un modelo. Desafortunadamente, no puedo entender cómo configurar contratos modelo con nombres que difieren del JSON entrante. Por ejemplo:Enlace de modelo de DataContract a JSON en ASP.NET MVC Argumentos del método de acción
[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; }
}
al pasar en un objeto JSON que representa la sesión de Facebook, las propiedades secretas y expira unir correctamente, pero el resto no lo hacen debido a que el nombre de la propiedad es diferente que el nombre de la clave JSON. Esperaría que el serializador de contrato de datos intente y se vincule con el nombre provisto en el atributo, pero ese no parece ser el caso. ¿Alguien tiene alguna sugerencia de solución?
Editar
Un ejemplo de cómo iba a utilizar este modelo:
public ActionResult Log(int? custId, FacebookSession response)
{
ViewBag.Id = response.UserId;
return View();
}
Asegúrese de reemplazar el encuadernador predeterminado: en Application_Start: 'ModelBinders.Binders.DefaultBinder = new SmartModelBinder (new [] {new NewtonsoftJsonModelBinder()}); ' – TodK