Как отправить простое значение из axios.post в ядро ​​asp.net? - PullRequest
0 голосов
/ 28 апреля 2019

Использование axios.post для отправки простого значения int в мой контроллер на ядре asp.net, когда отправляется любое значение, когда-либо полученное контроллером метода, получает значение "0" .

правильный способ отправки этого типа значения с помощью axios (отправка или удаление)?

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

}

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Тестирование разных способов, эта работа для меня:

 [Route("Delete/{id}"),HttpDelete("{id}")]
public async Task<ActionResult> Delete([FromRoute]int id){}

По аксиосам используйте delete:

request.axios_request.post('User/Delete/'+ id);
0 голосов
/ 28 апреля 2019

Похоже, вы пытаетесь сделать две разные вещи одновременно. Таким образом, вы можете указать идентификатор в маршруте или в теле HTTP-запроса. Если он находится в маршруте, должен быть вызван URL-адрес «Пользователь / Удалить / {id}». В этом случае вы должны указать [FromRoute] перед параметром id функции «Удалить». вот так (я бы порекомендовал использовать HTTP-удаление для этого: вы можете прочитать об использовании удаления с помощью axios здесь: Axios Удалить запрос с телом и заголовками? ):

[Route("Delete")]
[HttpDelete]
public async Task<ActionResult> Delete([FromRoute] int id) 

Если вы хотите указать идентификатор в теле, которое вы должны сделать, как вы упоминаете, используйте [FromBody] следующим образом:

[Route("Delete")]
[HttpPost]
public async Task<ActionResult> Delete([FromBody] int id) 

Если вы хотите удалить модель, я бы предложил вместо этого использовать HTTP-метод delete. Затем вы должны использовать декоратор [HttpDelete] вместо [HttpPost], как показано выше.

Edit: Кроме того, я вижу, что вы отправляете объект, содержащий идентификатор параметра, в контроллер. Попробуйте либо просто отправить число, либо изменить параметр функции на объект, содержащий идентификатор, чтобы он соответствовал тому, что вы отправляете при вызове axios.

Это означает изменение этой строки:

var axiosResp= await request.axios_request.post('User/Delete', JSON.stringify({id:id}));

до:

var axiosResp= await request.axios_request.post('User/Delete', id);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...