POST JSON для бритвенных страниц - PullRequest
0 голосов
/ 28 января 2019

Я новичок на страницах бритвы в ядре .Net, и у меня возникли проблемы с пониманием того, как это работает в случае с AJAX Post.

Я создал пример проекта, чтобы объяснить мою проблему

У меня есть одна простая форма с тремя входными данными в файле с именем Index.cshtml:

<form method="post">
    firstname :
    <input id="firstname" type="text" name="firstname" />
    name:
    <input id="name" type="text" name="name" />
    message:
    <input id="message" type="text" name="message" />

    <input type="submit" value="Submit">
</form>

<script src="~/lib/jquery/dist/jquery.js"></script>
<script>
    $(document).ready(function(){
        $("form").submit(function () {
            var message = {
                firstname: $("#firstname").val(),
                name: $("#name").val(),
                message: $("#message").val()
            }

            $.ajax({
                url: "/Index",
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(message),
                success: function () {
                    console.log("success")
                },
 
            });
        })
    });
</script>

Я хочу отправить свой объект (сообщение) json моей функции OnPost () в PageModel:

    public class IndexModel : PageModel
    {
        public void OnGet()
        {

        }

        public void OnPost(string json)
        {
            Console.WriteLine(json);
        }
    }

Проблема в том, что он нулевой,

Я также попробую:

data: { "json" : JSON.stringify(message) },

Но в моемМетод OnPost, json всегда равен нулю.

Можете ли вы объяснить мне, где моя ошибка?

Спасибо

1 Ответ

0 голосов
/ 29 января 2019

Это проблема привязки модели. Когда вы публикуете данные как Json, полученные данные представляют собой объект json, такой как {"firstName":"Andrew","name":"Lock","message":"Hello"}.

Поэтому вы должны использовать сообщение модели в качестве параметра в обработчике.Чтобы правильно связать JSON в ASP.NET Core, необходимо изменить действие, включив в параметр атрибут [FromBody].

Вы можете взглянуть на привязки модели JSON POSTв ASP.NET Core .

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