从网络获取空值 api

Getting null value from Web api

我正在尝试存储作为对话成员的字符串列表。

[DataContract]
public class Conversation
{
    [Key]
    [DataMember]
    public string Key { get; set; }
    [DataMember]
    public string ConversationName { get; set; }
    [DataMember]
    public string Administrator { get; set; }
    [DataMember]
    public List<string> Members { get; set; }

    public Conversation(string key, string name, string admin, List<string> members)
    {
        Key = key;
        ConversationName = name;
        Administrator = admin;
        Members = members;
    }

    public Conversation()
    {

    }
}

我正在使用 Postman 向似乎工作正常的 URI 发出 Post 请求,返回 201 Created 并提供包含正确信息的 json 对象。 这是我发布的json:

{
    "Key": "123",
    "ConversationName": "Test",
    "Administrator": "Ken",
   "Members": ["y@12.com", "f@78.com"]
}

但是,当我尝试使用 GET 方法获取对话时,结果如下:

{
  "Key": "123",
  "ConversationName": "Test",
  "Administrator": "Ken",
  "Members": null
}

这些是我在控制器中的功能:

Post:

[HttpPost]
    //[ResponseType(typeof(Conversation))]
    public async Task<IHttpActionResult> PostConversation(Conversation convo)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Conversations.Add(convo);
        await db.SaveChangesAsync();

        return CreatedAtRoute("DefaultApi", new { name = convo.Key }, convo);
    }

获取:

[HttpGet]
public IQueryable<Conversation> GetConversations()
{
    return db.Conversations;
}

如有任何帮助,我们将不胜感激。谢谢!

post 基本上 returns 您提供的实体,即 with Members,显然。

get 从数据库中加载一个 Conversation。在那一刻它不能有任何 Members,因为 Members 是一个 List<string>,不可能映射到数据库列。

您可能希望 postMembers 存储到数据库中。这不会发生,因为您应该使用 Member entities 而不是字符串。 Member 可以是一个简单的 class 有一个 Id 和一个 string 属性.