Asp. Net -Core с веб-приложением Razor Pages отправляет значения методом Post - PullRequest
0 голосов
/ 01 августа 2020

Возможно ли в приложении Asp. Net -Core Webb с Razor Pages отправлять некоторые значения через URL-адрес и метод публикации? Я знаю, что в MVC вы бы использовали метод HttpPost, но это невозможно в. Net Core.

Например, в моем js файле у меня есть эта функция, которая получает параметр a :

function redirect(a)
{
    $.ajax({
      type: 'POST',
      url: './MyPage', //I also tried @Url.Page("SetValue")'
      dataType: 'int',
      data: { a },
   });
}

Я хочу иметь возможность отправить это значение на мою страницу Razor, примерно так:

public void OnPostSetValue(int a)
{         
    Debug.WriteLine(a); //here I will use the value       
}

Но я получаю эту ошибку: «Не удалось загрузить ресурс: сервер ответил статусом 500 () [https://localhost: 44350 / MyPage] «

Я знаю, что, вероятно, это не способ сделать это, но я нашел только примеры для MVC. Есть ли способ сделать это здесь, в Asp. Net Core?

1 Ответ

1 голос
/ 03 августа 2020

Но я получаю эту ошибку: «Не удалось загрузить ресурс: сервер ответил статусом 500 () [https://localhost: 44350 / MyPage]»

Вы можете сделать это в Asp. Net Core с Razor Pages.

Прежде всего, в вашем url в * не указано c post method name 1033 *.

Во-вторых, при использовании ajax для передачи параметров в Razor Pages существует особое требование, мы должны сами предоставить токен защиты от подделки , что означает, что нам нужно добавьте @Html.AntiForgeryToken() на странице просмотра, затем добавьте headers в ajax, чтобы передать маркер защиты от подделки.

Для получения дополнительных сведений см. на это .

Вот полный пример:

@page
@model WebApplication_razorpage_new.Pages.MyPageModel
@{
    ViewData["Title"] = "MyPage";
    Layout = "~/Pages/Shared/_Layout.cshtml";
}
 
@Html.AntiForgeryToken()
<input id="Button1" type="button" value="button" onclick="redirect(1)" />
 

@section Scripts{
    <script>
        function redirect(a) {
            $.ajax({
                type: 'POST',
                url: '@Url.Page("MyPage", "SetValue")',
                dataType: 'int',
                data: {a},
                headers: {
                    RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val()
                }
            });
        }
    </script>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...