вам может потребоваться применить атрибуты [DataContract]
и [DataMember]
к вашему документу.
В качестве отдельной опции вы можете рассмотреть этот метод расширения, который я написал для mvc ControllerContext:
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
public static class MvcExtensions
{
public static T DeserializeJson<T>(this ControllerContext context)
{
var serializer = new JavaScriptSerializer();
var form = context.RequestContext.HttpContext.Request.Form.ToString();
return serializer.Deserialize<T>(HttpUtility.UrlDecode(form));
}
}
Позволяет легко десериализовать JSON с помощью JavaScriptSerializer следующим образом:
var myInstance = controllerContext.DeserializeJson<MyClass>();
Или, что еще проще, вы можете сделать общее связующее для модели:
public class JsonBinder<T> : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
return controllerContext.DeserializeJson<T>();
}
}
А затем строго введите свой метод действия mvc, применив этот атрибут к классу poco:
[ModelBinder(typeof(JsonBinder<MyClass>))]