Nano Hash - криптовалюты, майнинг, программирование

AJAX-запрос к методу, содержащемуся в файле класса

Я пытаюсь сделать запрос AJAX на странице Razor, вызывая метод, содержащийся в отдельном файле класса (НЕ в модели страницы для страницы, поскольку в конечном итоге я хочу сделать один и тот же запрос с нескольких разных страниц).

К сожалению, запрос не выполняется. Я думаю, что это может быть связано с синтаксисом, который я использовал, или, возможно, с классом, который я пытаюсь назвать, не того типа. Обратите внимание, что запрос работает, если я изменю URL-адрес на метод в модели страницы (никаких других изменений не требуется).

Я новичок в ASP.NET Core Razor Pages и запросах AJAX, поэтому, если здесь есть фундаментальное недоразумение, дайте мне знать.

Код запроса AJAX (jQuery):

$(document).ready(function () {
    $.ajax({
        dataType: 'json',
        url: '/Tools/Redirect?handler=AccessRedirect',
        type: 'GET',
        success: function (data) {
            alert("Request Success, Data = " + data);
        },
        error: function () {
            alert("Request Failed");
        }
    });
})

(Я также пробовал url: /Tools/Redirect/AccessRedirect, используя метод, называемый просто AccessRedirect, с атрибутом [HttpGet], но это тоже не сработало)

Код класса С# (файл Redirect.cs в папке Инструменты):

    public class Redirect
    {
        public JsonResult OnGetAccessRedirect()
        {
            return new JsonResult("test");
        }
    }

Любая помощь приветствуется. Спасибо.


  • 1. Ваш Redirect должен происходить от Controller и должен иметь суффикс, например RedirectController ... 2. Каков ваш маршрут? 04.12.2018
  • Это JsonResult существует за пределами файла .cshtml.cs страницы? Я не думаю, что вы можете поместить JsonResult вне файла кода страницы, почему бы просто не создать статический класс со статическими методами и не вернуть JsonResult с помощью этого метода? Примечание. Страницы Razor должны быть производными от PageModel вместо Controller. 04.12.2018
  • Добавляете ли вы токен запроса Anti Forgery? См. stackoverflow.com/questions/46410716/ 06.12.2018

Ответы:


1

Ваше фундаментальное непонимание заключается в том, что запросы Razor Pages должны быть нацелены на метод обработчика в классе PageModel. Вы не можете сопоставлять URL-адреса с произвольными методами в файлах классов. Методы обработчика должны находиться в классе, производном от PageModel, и они должны следовать определенным соглашениям.

Подробнее о методах-обработчиках в Razor Pages можно прочитать здесь: https://www.learnrazorpages.com/razor-pages/handler-methods

Если у вас есть код, который вы хотите централизовать, вы можете поместить его в класс C#, а затем вызвать метод в методе обработчика.

04.12.2018
  • Спасибо за совет - это имеет смысл. 04.12.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..