Как мы можем привязать примитивное значение (string, int) к параметру действия, когда мы используем Ajax в Asp. Net Core 3.1? - PullRequest
0 голосов
/ 19 июня 2020

Я работаю над веб-приложением, используя Asp. Net Core 3.1, я делаю вызов ajax (используя библиотеку ax ios, метод - 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>

в my HomeController у меня есть соответствующее действие:

[HttpPost]
public IActionResult Test(string abc)
{
    return Json(new { abc });
}

в этом случае привязка не работает, даже если я добавляю атрибут [FromBody], например:

[HttpPost]
public IActionResult Test([FromBody]string abc)
{
    return Json(new { abc });
}

какое решение в этом чехол?

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Иногда привязка FromBody не может проанализировать html содержимое тела. Попробуйте изменить тип параметра со строкового на динамический c. Он должен попасть в ваш контроллер. Вы можете обернуть свой параметр в класс, который имеет только это поле, и там привязка работает.

Также вы можете воспользоваться ограничениями действия и попробовать это тоже

HttpPost("{abc:string}")

Надеюсь на это помощь

0 голосов
/ 21 июня 2020

Вы можете использовать FormData () для передачи данных ax ios контроллеру:

 <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>

Вот результат теста:

введите описание изображения здесь

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