如何从axios.post发送简单的值到asp.net核心?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从axios.post发送简单的值到asp.net核心?相关的知识,希望对你有一定的参考价值。
使用axios.post向asp.net核心上的控制器发送一个简单的值int,当发送任何值时,方法控制器接收值“0”。
使用axios(post或delete)发送此类值的正确方法是什么?
PD:我可以使用[FromBody]正确发送模型并在控制器上接收
方法控制器:
[Route("Delete"),HttpPost]
public async Task<ActionResult> Delete(int id)
{
try{
var result = await userService.DeleteUserPerson(id);
return Json(new{
response=true,
data=result,
error=""
});
}
catch(Exception ex){
return Json(new{
response=false,
data=false,
error=ex.Message
});
}
}
反应类的方法:
async function DeleteUser(id, props){
var request= new Request({});
try{
console.log(id);
var axiosResp= await request.axios_request.post('User/Delete', JSON.stringify({id:id}));
if(axiosResp.status!=200){
//do smething
}
//this case validate error
if(axiosResp.data.response && !axiosResp.data.error){
//do something
}
//do something
}catch(err){
//do something
}
}
班级要求(axios):
export default class Request {
constructor(){
this.axios_request = axios.create({
baseURL: 'http://localhost:5000/api',
timeout: 5000,
headers: authHeader()
});
}
}
看起来你正试图一次做两件事。因此,您可以在路由中或HTTP请求的正文中指定id。如果它在路由中,则应该调用的URL是“User / Delete / {id}”。在这种情况下,您应该在函数“Delete”的id参数之前指定[FromRoute]。像这样(我建议使用HTTP删除:你可以在这里阅读有关使用带有axios的删除:Axios Delete request with body and headers?):
[Route("Delete")]
[HttpDelete]
public async Task<ActionResult> Delete([FromRoute] int id)
如果你想在身体中指定你应该做的身份,正如你自己提到的那样,使用[FromBody],如下所示:
[Route("Delete")]
[HttpPost]
public async Task<ActionResult> Delete([FromBody] int id)
如果你想删除一个模型,那么我建议实际使用HTTP方法删除。然后你应该使用装饰器[HttpDelete]代替[HttpPost],如上所示。
编辑:此外,我可以看到您正在向控制器发送包含参数id的对象。尝试只发送数字或将函数的参数更改为包含id的对象,以匹配您在axios调用中发送的内容。
这意味着更改此行:
var axiosResp= await request.axios_request.post('User/Delete', JSON.stringify({id:id}));
至:
var axiosResp= await request.axios_request.post('User/Delete', id);
以上是关于如何从axios.post发送简单的值到asp.net核心?的主要内容,如果未能解决你的问题,请参考以下文章
如何检索由axios post请求发送的php中的变量[重复]