Публикация AJAX с относительным URL в MVC 5 - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть веб-приложение MVC 5, с которым я использую AJAX Posts для вызова действий контроллера.Допустим, у меня есть контроллер с именем «Account» и действие на этом контроллере с именем «Create».

Чтобы вызвать это действие, я использовал код, похожий на этот, который вызывается из моего представления Account / Index,от получения доступа к учетной записи / индексу GET.

$.ajax({
        type: "POST",
        url: "/Create",
        data: dataVar,
        processData: false,
        contentType: false,

        datatype: "json",
        success: function (data) {
            $('#result').html(data);
        }
    });

Это не мой точный код, но он показывает мою цель.Я использовал "/ Create" в качестве URL-адреса POST.Это работало нормально без проблем, пока, казалось бы, случайно сегодня не перестал находить способ действия.Я исправил это с помощью @ Url.Action, чтобы сгенерировать правильный URL для публикации, и это хорошо, но я хочу знать, действительно ли мне это нужно.(Псевдокод ниже)

$.ajax({
        type: "POST",
        url: "@Url.Action("Create","Account")",
        data: dataVar,
        processData: false,
        contentType: false,

        datatype: "json",
        success: function (data) {
            $('#result').html(data);
        }
    });

Есть ли что-то не так с тем, как у меня было раньше, где URL-адрес записи был относительно текущего контроллера?Стоит ли этого избегать, и всегда использовать функцию для генерации моего URL?

Мне особенно любопытно, почему раньше работал "/ Create", но теперь он должен неожиданно вызываться как "/ Account / Create".Есть идеи?Настройка в web.config или что-то?

1 Ответ

0 голосов
/ 25 сентября 2018

После некоторых дальнейших исследований кажется, что когда мой код был выполнен с использованием сокращенного URL-адреса, это была просто случайность.Правильный способ ввести URL-адрес для вызова AJAX - использовать полный относительный путь или вспомогательную функцию Razor, например, здесь:

$.ajax({
    type: "POST",
    url: "@Url.Action("Create","Account")",
    data: dataVar,
    processData: false,
    contentType: false,

    datatype: "json",
    success: function (data) {
        $('#result').html(data);
    }
});

Если используется метод Url.Action, а ваш javascript отсутствует на вашемпросмотреть страницу, URL должен быть передан через страницу просмотра в ваш JavaScript.

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