传入消息的反序列化

时间:2013-09-20 08:34:57

标签: 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.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属性为null。

如果我将post方法更改为字符串,那么我的客户端会收到 405 Method not allowed

public void Post(string message)
{
    using (var context = new ToDoEntities())
    {
       // context.Tasks.Add(todo.todo.ToEf());
       // context.SaveChanges();
    }
}

我很茫然,并且希望能够帮助解决字符串的反序列化,以及为什么我会得到这些奇怪的结果。

1 个答案:

答案 0 :(得分:1)

原因是我的Task Entity类没有空构造函数