我正在使用MVC.当我运行调试器并使用Postman进行测试并将鼠标悬停在参数上时,它显示参数传递给MovieIds的空值,但CustomerId正在按预期工作.
Api Controller:neWrental在调试时将MovieIds显示为null
public class NeWrentalsController : ApiController { private ApplicationDbContext _context; public NeWrentalsController() { _context = new ApplicationDbContext(); } [HttpPost] public IHttpActionResult CreateNeWrentals(NeWrentalDto neWrental) { var customer = _context.Customers.Single(c => c.Id == neWrental.CustomerId); var movies = _context.Movies.Where(m => neWrental.MovieIds.Contains(m.Id)).ToList(); //var movies = _context.Movies.Where(m => m.Id ==1); foreach (var movie in movies) { if (movie.NumberAvailable == 0) return BadRequest("Movie is not available."); movie.NumberAvailable--; var rental = new Rental { Customer = customer,Movie = movie,DateRented = DateTime.Now }; _context.Rentals.Add(rental); } _context.SaveChanges(); return Ok(); } }
DTO:
public class NeWrentalDto { public int CustomerId { get; set; } public List<int> MovieIds { get; set; } }
邮差要求:
{"customerId": 2,"movieId": 1,"dateRented": "2017-09-28T00:00:00" }
我认为这与List< int>有关.因为我可以硬编码Id,它会将它发送到数据库.
解决方法
正如你猜测的那样,问题是MovieIds是一个List< int>所以你的请求应该是这样的(使用方括号[]):
MovieIds: [1],
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。