Я пытаюсь использовать «стандартный» ненавязчивый шаблон 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, но я могу ошибаться, и в любом случае я не знаю, что с этим делать.
Есть какие-нибудь подсказки?
Спасибо.