我正在使用Asp.Net Core 3.1开发Web应用程序,我进行了ajax调用(使用axios库,方法是POST):
<script>
axios({
url: '/home/test', // HomeController/Test Action
method: 'post',
data: {
abc: 123
},
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
</script>
在我的HomeController中,我有相应的操作:
[HttpPost]
public IActionResult Test(string abc)
{
return Json(new { abc });
}
在这种情况下,即使我添加[FromBody]属性,例如:
,绑定也无法正常工作[HttpPost]
public IActionResult Test([FromBody]string abc)
{
return Json(new { abc });
}
在这种情况下有什么解决方案?
答案 0 :(得分:0)
您可以使用FormData()将axios数据传递到控制器:
<script>
var bodyFormData = new FormData();
bodyFormData.set('abc', 123);
axios({
url: '/Home/test', // HomeController/Test Action
method: 'post',
data: bodyFormData,
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
</script>
这是测试结果:
答案 1 :(得分:0)
有时,绑定的FromBody无法解析正文中的html内容。尝试将参数类型从字符串更改为动态。它应该命中您的控制器。 您可以将参数包装到仅具有该字段的类中,并且在那里进行绑定。
您还可以利用动作约束并尝试尝试
HttpPost("{abc:string}")
希望获得帮助