【发布时间】:2019-08-08 13:48:52
【问题描述】:
我有一个 asp.net 4.5.2 web 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 类并将其用作参数,我可以在发送时在 post 方法中接收数据。 我无法意识到我在手工课上缺少什么? 为什么它使用 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
}
【问题讨论】:
-
无论哪种方式都应该工作,POST确实与模型没有任何关系。当您从 Postman 发送参数时,您是如何做到的?只是一个猜测,但可能模型的序列化方式不同:大写与驼峰式。
-
你给出的例子应该有效。您可能需要粘贴不工作的确切 DTO 对象。 #null 值将在模型绑定器无法将 JS 对象隐式转换为 Post 参数时。 AFAIK 活页夹不区分大小写,但请仔细检查 DTO 属性的命名。有时会出现拼写错误。
标签: entity-framework asp.net-web-api dto edmx