无法将axious阵列列表从vuejs发布到.net Core
我在vuejs中工作,以.NETCore作为后端。当我使用axios发布单个数组时,它会被发布,但当我尝试发布数组列表时,当函数被命中时,服务器端总是0。尝试了很多方法,但没有任何帮助。 这是我的客户端代码无法将axious阵列列表从vuejs发布到.net Core,.net,vue.js,asp.net-core,axios,.net,Vue.js,Asp.net Core,Axios,我在vuejs中工作,以.NETCore作为后端。当我使用axios发布单个数组时,它会被发布,但当我尝试发布数组列表时,当函数被命中时,服务器端总是0。尝试了很多方法,但没有任何帮助。 这是我的客户端代码 let listOfRights= [{ RouteName: "Rname", UserName: "Uname" }, { RouteName: "Rname1", UserName: "Uname1" }] axios.request({ method: 'POST',
let listOfRights= [{ RouteName: "Rname", UserName: "Uname" }, { RouteName: "Rname1", UserName: "Uname1" }]
axios.request({
method: 'POST',
url: `/api/UserManager/saveUserRights`,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
params:listOfRights,
}).then(response => response.data).then(
res => {
debugger;
});
这是我的服务器端代码
[Authorize]
public IActionResult saveUserRights(List<MenuRights> listOfRights)
{
try
{
// further code
}
catch (Exception ex)
{
throw ex;
}
return Ok();
}
[授权]
公共IActionResult saveUserRights(权限列表)
{
尝试
{
//进一步代码
}
捕获(例外情况除外)
{
掷骰子;
}
返回Ok();
}
但在服务器端,它总是得到0条记录。例如,当我只在客户端发布一条记录时,我将参数从
params:listOfRights,
到
params:listOfRights[0],
在服务器端,从
public IActionResult saveUserRights(权利列表)
到
public IActionResult saveUserRights(菜单项权利列表)
然后它被张贴。
但我想发布列表。这是没有得到张贴。谢谢
能否验证以下代码:
let listOfRights= [
{ RouteName: "Rname", UserName: "Uname" },
{ RouteName: "Rname1", UserName: "Uname1" }
]
let url = '/api/UserManager/saveUserRights'
let headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
axios.post(url, listOfRights, headers).then((response) => {
console.log(response)
}, (error) => {
console.log('EROR:', error)
})
并检查console.log返回的内容
您还可以在服务器端代码上设置一个断点,以查看它是否传递了正确的数据。这一点对我有效。你可以试试这个
axios({
method: 'post',
url: '/api/customersfilter',
data: {
min_number: this.min_number,
equal_num: this.equal_num,
max_number: this.max_number,
}
})
通过在API方法中添加[FromBody]标记进行修复
public IActionResult saveUserRights([FromBody]权限列表)
现在它也在接受列表。你能在Chrome控制台的网络选项卡上验证网络调用和传递给API的相应数据吗?
0:{“RouteName”:“Rname1”,“用户名”:“Uname1”}1:{“RouteName”:“Rname”,“UserName”:“Uname”}
这是传递给APIf这是通过的,接下来,您需要做的是在服务器端代码上设置一个断点,并验证参数List listOfRights
是否实际获取了Axios调用传递的值。我已经添加了一个断点,该断点会被命中,但如果列表为空,是否有一个方法会在调用控制器之前被命中?也许数据在某个时候被撤销了?您还可以发布MenuRights
类的代码吗。可能某些验证正在删除数据…[{RouteName:“Rname”,用户名:“Uname”},{RouteName:“Rname1”,用户名:“Uname1”}]0:{RouteName:“Rname”,用户名:“Uname”}1:{RouteName:“Rname1”,用户名:“Uname1”}
相同的内容不会被发布