@ Url.Action возвращает разные результаты при последующих вызовах - PullRequest
1 голос
/ 18 августа 2011

Я уверен, что это что-то такое в jQuery / MVC3, что я просто еще не понял, так что если кто-то может сказать мне, почему это так.

Когда я вызываю процедуру действия несколько раз, процедура @ Url.Action возвращает разные строки.

Следующее работает независимо от того, сколько раз оно вызывается.

function DeletePhone( delId )
{
    var va = $("#idPhoneNumberView *").serializeArray();
    $.ajax({
        url: '@Url.Action( "DeletePhone", "Player")/' + delId,
        data: JSON.stringify(va),
        type: 'POST',
        contentType: 'application/json',
        dataType: 'html',
        success: function (resp)
        {
            var ev = document.getElementById("idPhoneNumberView");
            ev.innerHTML = resp;
        },
        error: function (x)
        {
            alert(x.status);
        }
    });
};

Эта процедура работает только в первый раз.

function DeletePhone( delId )
{
    var va = $("#idPhoneNumberView *").serializeArray();
    $.ajax({
        url: '@Url.Action( "DeletePhone", "Player")/' + delId,
        data: JSON.stringify(va),
        type: 'POST',
        contentType: 'application/json',
        dataType: 'html',
        success: function (resp)
        {
            $("#idPhoneNumberView").html(resp);
        },
        error: function (x)
        {
            alert(x.status);
        }
    });
};

URL-адрес "/ Mvc / Player / DeletePhone / 0" при первом вызове и это "/ Mvc / Player / DeletePhone / 0/0" на последующих вызовах, так как я получаю 404 после первого вызова, который отображается из функции ошибки, которая понятна, учитывая URL.

Обработка отличается, когда я использую jQuery $ ("# idPhoneNumberView"). Html (соответственно), поэтому, если кто-то сможет меня ускорить, это будет оценено.

Я хочу быть уверен, что я в этом уверен. ЕДИНСТВЕННОЕ различие в коде работает и то, что нет, это использование jQuery, а не использование getElementById непосредственно в функции успеха.

Я не понимаю, как использование метода jQuery html заставляет метод @ Url.action создавать различные пути при последующих вызовах. Скотт

1 Ответ

3 голосов
/ 18 августа 2011

Url.Action частично основано на текущем URL, используемом для генерации запроса.Если запрос /, то это все, что будет получено в результате, потому что это та же страница, на которой вы находитесь.Если вы переходите на другой controller или action, он сгенерирует URL-адрес только с указанными вами значениями.

Например: при переходе к /home/action/1 с Url.Action("action", "home") в этом представлении результирующий путь будет той же страницей и, таким образом, будет просто использовать переданный URL, а не генерировать новый URL.(Странное поведение для меня сейчас, когда я это вижу)

К сожалению, единственное, что я знаю, это сделать следующее

@Url.Action("DeletePhone", "Player", new { id = UrlParameter.Optional })

(при условии, что вы используете маршрут по умолчанию, где {id} это имя параметра

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