Request.IsAjaxRequest возвращает false на POST - PullRequest
2 голосов
/ 18 ноября 2009

Мой вопрос похож на этот , и у меня похожая проблема, но большая разница в том, что я использую вспомогательные методы Ajax (Ajax.ActionLink и Ajax.BeginForm) вместо обработки AJAX с JQuery.

Request.IsAjaxRequest() возвращает true для метода Edit, который принимает http GET, но false для метода Edit, принимающего http POST.

Запрос GET приходит по ссылке, сгенерированной:

<%=Ajax.ActionLink(item.Name, "Edit", "Device",
     new { id = item.ID },
     new AjaxOptions { HttpMethod= "GET", UpdateTargetId = "ModalDialog" },
     new { name = item.Name })%>

Запрос POST приходит из формы, сгенерированной этим кодом:

<% using (Ajax.BeginForm("Edit", "Device", new { id = Model.ID }, new AjaxOptions { OnComplete = "CloseDialog" }))
{ %>
    <fieldset>
         <h4>
            <label for="Name">Name</label>
        </h4>
        <%= Html.TextBox("Name", null, new { @class = "required" })%>

        <h4>
            <input type="checkbox" id="IsActive" name="IsActive" <% if (Model.IsActive)%> <%=Html.Encode("checked=''")%> />
            <label for="IsActive">Unit Is Active</label>
        </h4>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
<% } %>

Это умышленно, я что-то не так делаю, и как мне это исправить?

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Все там выглядит нормально. Одна мысль: в вашем AjaxOptions вы указываете функцию «CloseDialog» для OnComplete. Это было создано и доступно ли для формы? Если нет, скрипт MvcAjax выдаст ошибку и форма вернется к обычной обратной передаче.

0 голосов
/ 18 ноября 2009

Я очень удивлен, услышав это. Вы можете установить дополнение Firebug для Firefox и отслеживать сетевой трафик на вкладке NET. Во вложенной вкладке XHR отображаются только запросы aSync.

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