Asp.net mvc 4 传入消息的反序列化

Asp.net mvc 4 传入消息的反序列化,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,Json从客户端发送到我的api控制器 消息 {"todo":{"title":"jo","isCompleted":false,"isDeleted":false,"testFK":null}} 我将列出不同的消费服务器端方法,它们应该接收转换为对象的消息 public void Post(TaskEntity todo) { using (var context = new ToDoEntities()) { context.Tasks.Add(todo.T

Json从客户端发送到我的api控制器

消息

{"todo":{"title":"jo","isCompleted":false,"isDeleted":false,"testFK":null}}
我将列出不同的消费服务器端方法,它们应该接收转换为对象的消息

public void Post(TaskEntity todo)
{
    using (var context = new ToDoEntities())
    {
        context.Tasks.Add(todo.ToEf());
        context.SaveChanges();
    }
}
todo
参数为空

public void Post(UpdateTodoInputMessage message)
{
    using (var context = new ToDoEntities())
    {
        context.Tasks.Add(todo.todo.ToEf());
        context.SaveChanges();
    }
}
消息类

namespace MvcApplication1.Messages
{
    [DataContract]
    public class UpdateTodoInputMessage
    {
        [DataMember]
        public TaskEntity todo { get; set; } 
    }
}
消息类的
todo
属性为空

如果我将post方法更改为字符串,那么我的客户端将收到一个405方法,这是不允许的


我不知所措,希望得到一些帮助,了解字符串的反序列化是如何进行的,以及为什么我会得到这些奇怪的结果。

原因是我的任务实体类没有空构造函数

发现问题需要空构造函数
public void Post(string message)
{
    using (var context = new ToDoEntities())
    {
       // context.Tasks.Add(todo.todo.ToEf());
       // context.SaveChanges();
    }
}