值不能为空。实体

时间:2017-07-12 11:08:05

标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-web-api2

我有网络API

我尝试发送邮递员的请求

这是我的模特

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace trackingappbackend.Models
{
    using System;
    using System.Collections.Generic;

    public partial class StartWorkingDay
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Key]
        public int Id { get; set; }
        public string Company { get; set; }
        public string Date { get; set; }
        public string Time { get; set; }
        public string INN { get; set; }
    }
}

这是控制器

// POST: api/StartWorkingDays
    [ResponseType(typeof(StartWorkingDay))]
    public IHttpActionResult PostStartWorkingDay(StartWorkingDay startWorkingDay)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.StartWorkingDays.Add(startWorkingDay);
        db.SaveChanges();

        return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
    }

我在屏幕上传递数据

enter image description here

但我有这个错误

  

值不能为空。参数名称:entity

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您正在请求正文中发送数据,而您的Post方法并不知道。您可以更改Post方法以添加[FromBody]以从正文中提取数据。

[ResponseType(typeof(StartWorkingDay))]
public IHttpActionResult PostStartWorkingDay([FromBody]StartWorkingDay startWorkingDay)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.StartWorkingDays.Add(startWorkingDay);
    db.SaveChanges();

    return CreatedAtRoute("DefaultApi", new { id = startWorkingDay.Id }, startWorkingDay);
}

另外,尝试调试您的方法,看看您的startWorkingDay参数是否已使用发送的数据进行反序列化。

希望帮助。

奥马