如何从axios.post发送简单的值到asp.net核心?

问题描述 投票:0回答:1

使用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()
    });
}

}
javascript c# reactjs asp.net-core axios
1个回答
0
投票

看起来你正试图一次做两件事。因此,您可以在路由中或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);