Вызов метода C# из JQuery Ajax in. NET Core Razor Pages - PullRequest
0 голосов
/ 02 марта 2020

У меня есть этот метод в коде Razor Page, за которым я хотел бы позвонить, используя JQuery Ajax

[HttpPost]
    public IActionResult OnPostPopulateMovieDate(int selectedMovieId)
    {
        return new JsonResult("json result");
    }

Это мой JQuery код для вызова метода

 $.ajax({
            contentType: "application/json",
            dataType: 'json',
            type: "POST",
            data: {selectedMovieId:this.selectedIndex},
            url: "/MovieDateHall/Create?handler=PopulateMovieDate",
            success: function () {
                console.log('ok')
            }
        });

Я изменил свой URL на url: "/MovieDateHall/OnPostPopulateMovieDate",, но все еще безуспешно.

Я установил точку останова в методе PopulateMovieDate и отладил ее. Но она не достигает точки останова.

MovieDateHall - это имя подпапки в Pages.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

На странице бритвы для вызова метода ajax необходимо убедиться в следующих двух моментах:

(вы также можете обратиться к этой ссылке )

  1. Зарегистрируйте службу Antiforgery-Service
  2. Добавьте токен к вашему запросу
  3. Добавьте токен Antiforgery на свою страницу, добавив или напрямую, используя @ Html .AntiForgeryToken HtmlHelper

В соответствии с этим вы можете изменить свой код следующим образом:

@page
@model WebApplication1_rzaor_page.CreateModel
@{
    ViewData["Title"] = "Create";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}
@section Scripts{
    <script>
        $(function () {
            $("#Submit1").click(function () {
                $.ajax({
                    //contentType: "application/json", // remember to remove this line to ensure pass the correct selectedMovieId 
                    dataType: 'json',
                    type: "POST",
                    data: { selectedMovieId: 1 },
                    url: "/MovieDateHall/Create?handler=PopulateMovieDate",
                    beforeSend: function (xhr) {
                        xhr.setRequestHeader("XSRF-TOKEN",
                            $('input:hidden[name="__RequestVerificationToken"]').val());
                    },
                    success: function () {
                        console.log('ok')
                    }
                });
            })

        })
    </script>
} 


@Html.AntiForgeryToken()
<input id="Submit1" type="submit" value="submit" />
0 голосов
/ 02 марта 2020

Какую ошибку вы получаете? Вы проверяли консоль браузера на наличие ошибки javascript? Также убедитесь, что в вашем методе RegisterRoutes существует следующая строка:

rout.IgnoreRoute ("{resource} .axd / {* pathInfo}");

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