частичное представление не обрабатывается при вызове ajax в IE 9.0 - PullRequest
0 голосов
/ 19 августа 2011

У меня вызов ajax с отлично работает в Mozilla и Chrome, но не в IE 9.0. Код выглядит следующим образом:

Я не могу понять, почему myDiv не обновляется. Сохранение выполняется соответствующим образом, просто myDiv не обновляется в IE9.0.

$.ajax({

                cache: false,
                contentType: "application/json; charset=utf-8",
                dataType: "html",
                url: "@Url.Action("Save", "Employee")",
                data:
                {
                    Id: $("#ID").val(),

                },
                success: function (data)
                {
                        $("#myDiv").html(data);                


                },
                error: function (request, status, error)
                { 
                                    }
           });

<div id="myDiv">
            @{Html.RenderPartial("NewPage", Model);}
        </div>

NewPage.cshtml

    @model MvcUI.Models.myModel
<div id="GridDiv">
<table>

</table>
</div>

Контроллер:

   [Authorize]
    public ActionResult NewPage( int Id)
    {
           return PartialView(new myModel(Id));
    }

    [Authorize]
    public ActionResult Save(int Id)
    {

        myModel.Save(Id);
        return RedirectToAction("NewPage", new {Id = Id});

    }

наблюдение Я делал различные тесты и наблюдал следующее поведение: В режиме отладки: 1. В первый раз я сохраняю, сохраняю готово и обновляю таблицу. 2. во второй раз сохранение выполнено и таблица обновлена. 3. Когда я делаю это в четвертый раз, сохранение выполнено, но не достигает ActionResult NewPage (int Id), таблица не обновляется, но отображаются некоторые старые данные ...!

В развернутом режиме: 1. Только в первый раз я сохраняю, сохраняю готово и обновляю таблицу. 2. Во второй раз он только сохраняет, но не обновляет данные таблицы!

У меня нет ошибок или исключений.

1 Ответ

1 голос
/ 22 августа 2011

Вы пытались установить заголовки истечения срока ответа? У меня были проблемы, когда IE не отображал перезагрузку страницы, если вы не установили следующее:

<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

Я поместил их в теги ASP, но не стесняйтесь делать это в вашем контроллере, если вы предпочитаете (вместо того, чтобы повторять это при каждом действии, возможно, создайте метод инициализации)

EDIT:

Согласно комментарию @ learning, можно также использовать атрибут OutputCache , чтобы эффективно делать то же самое

[OutputCache(Duration = 0)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...