MVC.Net, Ajax.BeginForm, jQuery и IE8 - PullRequest
       32

MVC.Net, Ajax.BeginForm, jQuery и IE8

3 голосов
/ 21 марта 2012

Я пытаюсь использовать «стандартный» ненавязчивый шаблон JavaScript AJAX MVC.Net, как описано здесь:

http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-ajax.html

В частности, шаблон может выглядеть следующим образом:

// В ПРОСМОТРЕ

@using (Ajax.BeginForm("action1", "controller1",
    null,
    new AjaxOptions()
    {
        HttpMethod = "POST",
        OnSuccess = "successHandler",
    },
    new { id = "formId" }
    ))
{

    @Html.TextBoxFor(m => m.ModelItem)
    <input type="submit" value="Go" />
}

Я считаю, что я настроил необходимые элементы в Web.Config, а также то, что работает с кодом jQuery. Метод "action1" на контроллере настроен так, чтобы возвращать JsonResult, возможно, так:

// В отвечающем КОНТРОЛЛЕРЕ (и использование МОДЕЛИ здесь не важно)

    public JsonResult action1(MyModel model)
    {
        if (ModelState.IsValid)
        {
            return Json(new { statusCode = 1 });
        }

        return Json(new { statusCode = 0 });
    }

Этот шаблон прекрасно работает, когда я использую "современные" браузеры; то есть последние версии от трех основных поставщиков. Однако, когда я пытаюсь что-либо сделать с Internet Explorer 8 (и, вероятно, раньше), я получаю диалоговое окно «Загрузка файла - Предупреждение безопасности». Я считаю, что это диалоговое окно всплывает, потому что браузер не знает, как обрабатывать тип содержимого, созданный JsonResult (application / json), и поэтому предлагает пользователю сохранить возвращаемое значение. Однако изменение типа содержимого в методе JsonResult, скажем, «text / plain» или «text / html», также не работает. Вместо этого IE8 перенаправляет окно браузера для отображения необработанного JSON, отправленного обратно. Ни одно из этих поведений не работает для меня.

У меня есть ощущение, что проблема связана с тем, что проблема заключается в том, что «ajaxification» формы Ajax.BeginForm просто не происходит в IE8, но я могу ошибаться, и в любом случае я не знаю, что с этим делать.

Есть какие-нибудь подсказки?

Спасибо.

...