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