ASP.NET Core 3.1 API中模型绑定问题的疑难解答

ASP.NET Core 3.1 API中模型绑定问题的疑难解答,asp.net,asp.net-core,asp.net-core-webapi,asp.net-core-3.1,Asp.net,Asp.net Core,Asp.net Core Webapi,Asp.net Core 3.1,我试图通过POST请求将对象发送到我的ASP.NET Core 3.1 API,但我不断收到错误请求。就我所见,我确实有一个类与我所期望的完美匹配,但显然不是。我怎样才能确切地看到问题是什么 以下操作失败: public async Task<IActionResult> Post([FromBody] MyCustomObject input) { // Do something here... } 正如我所说,我刚刚收到一个400,错误请求。我一遍又一遍地查看MyCust

我试图通过
POST
请求将对象发送到我的ASP.NET Core 3.1 API,但我不断收到
错误请求。就我所见,我确实有一个类与我所期望的完美匹配,但显然不是。我怎样才能确切地看到问题是什么

以下操作失败:

public async Task<IActionResult> Post([FromBody] MyCustomObject input)
{
   // Do something here...
}
正如我所说,我刚刚收到一个
400
错误请求。我一遍又一遍地查看
MyCustomObject
,它看起来与我发送的对象完全相同

下面是我的自定义类的外观:

public class CreateContactVm
{
    [GuidEmptyNotAllowed]
    public Guid AccountId { get; set; }

    [Required]
    public string AccountName { get; set; }

    [GuidEmptyNotAllowed]
    public Guid ContactGroupId { get; set; }

    [IntZeroNotAllowed]
    public int ContactType { get; set; }

    public string FirstName { get; set; }

    public string MiddleName { get; set; }

    public string LastName { get; set; }

    public string EntityName { get; set; }

    public List<AddEmailVm> Emails { get; set; } = new List<AddEmailVm>();

    public List<AddPhoneNumberVm> PhoneNumbers { get; set; } = new List<AddPhoneNumberVm>();

    public List<AddAddressVm> Locations { get; set; } = new List<AddAddressVm>();
}

这也证明了问题在于模型绑定。我的自定义类中的某些内容不喜欢它接收的
JSON
对象。

类的内部结构是什么样子的?您是否将from发布为JSON格式?您的请求的
内容类型是什么?发布的JSON的内容是什么?
MyCUstomObject
是什么样的?不太复杂,但它有很多属性,其中一些是数组。我还使用验证来确保在某些属性中获取数据,例如
[必需]
FirstName
属性以及我自己的一些自定义验证。我确信这是导致问题的原因,所以我禁用了所有验证。我用我的自定义类更新了原始帖子,并找到了答案!!!这是my
AddAddressVm
类中的两个属性,用于my
CreateContactVm
自定义对象中的
Locations
属性。我的
AddAddressVm
类中有两个
string
属性,即经度和纬度。在前端,我使用GoogleAPI查找一个位置,该位置将经度和纬度值作为数值返回!这就是问题所在。我的前端正在为这两个属性创建一个带有数值的
JSON
对象,但我的后端需要
string
值。疯狂!!!你的类内部是什么样子的?你有没有把from作为JSON格式发布?您的请求的
内容类型是什么?发布的JSON的内容是什么?
MyCUstomObject
是什么样的?不太复杂,但它有很多属性,其中一些是数组。我还使用验证来确保在某些属性中获取数据,例如
[必需]
FirstName
属性以及我自己的一些自定义验证。我确信这是导致问题的原因,所以我禁用了所有验证。我用我的自定义类更新了原始帖子,并找到了答案!!!这是my
AddAddressVm
类中的两个属性,用于my
CreateContactVm
自定义对象中的
Locations
属性。我的
AddAddressVm
类中有两个
string
属性,即经度和纬度。在前端,我使用GoogleAPI查找一个位置,该位置将经度和纬度值作为数值返回!这就是问题所在。我的前端正在为这两个属性创建一个带有数值的
JSON
对象,但我的后端需要
string
值。疯狂!!!
public class CreateContactVm
{
    [GuidEmptyNotAllowed]
    public Guid AccountId { get; set; }

    [Required]
    public string AccountName { get; set; }

    [GuidEmptyNotAllowed]
    public Guid ContactGroupId { get; set; }

    [IntZeroNotAllowed]
    public int ContactType { get; set; }

    public string FirstName { get; set; }

    public string MiddleName { get; set; }

    public string LastName { get; set; }

    public string EntityName { get; set; }

    public List<AddEmailVm> Emails { get; set; } = new List<AddEmailVm>();

    public List<AddPhoneNumberVm> PhoneNumbers { get; set; } = new List<AddPhoneNumberVm>();

    public List<AddAddressVm> Locations { get; set; } = new List<AddAddressVm>();
}
CreateContactVm request = new CreateContactVm();

try
{
    var element = (JsonElement)input; // input is the dynamic received
    request = JsonUtils.Deserialize<CreateContactVm>(element.GetRawText());
}
catch(Exception e)
{
    var error = e.Message;
}