我有一个asp.net 4.5.2网络api,一个POST方法收到了我手工编写的DTO参数,如下所示:
using System;
namespace WebApi.Models.DTO
{
[Serializable]
public class MyModelDto
{
public MyModelDto()
{
}
public int Id { get; set; }
public string Code { get; set; }
public int Type { get; set; }
}
}
当我从Postman调用此方法时,参数始终为null,但是如果我在EntityFramewok(edmx模型)中设计相同的DTO类并将其用作参数,则可以在发送后的方法内部接收数据。 我不知道手工课上缺少了什么? 为什么使用EF而不是在我的课堂上可以使用它? 将参数设置为动态也可以...
[HttpPost]
[JwtAuthentication]
[Route("api/bills/invoice")]
public JsonResult<WebApi.Models.DTO.MyModelDto> Post(WebApi.Models.DTO.MyModelDto param)
{
// Here param is always NULL
}
[HttpPost]
[JwtAuthentication]
[Route("api/bills/invoice")]
public JsonResult<Data.MyModelDto> Post(Data.MyModelDto param)
{
// Here param wors! based on the EF class
}
public JsonResult<Data.MyModelDto> Post(dynamic param)
{
// Here param wors! using dynamic data type
}
答案 0 :(得分:0)
这取决于您如何通过邮递员发送数据。
我没有邮递员在这里进行测试,但是请确保在发送数据时选择“ Json类型”,然后发送的数据需要与DTO匹配。像这样:
{
"Id":1,
"Type":"whatever",
"Code":"whatever"
}
由于您正在发送发布请求,因此该数据将放入请求的正文中。
一个额外的观察,您的DTO不需要空的构造函数,您可以摆脱它。没错:
public class MyModelDto
{
public int Id { get; set; }
public string Code { get; set; }
public int Type { get; set; }
}
出于测试目的,请放弃您的Jwt身份验证,直到您使呼叫正常运行