3

我正在尝试使用此处描述的“标准”MVC.Net 不显眼的 JavaScript AJAX 模式:

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,可能是这样的:

//在响应的 CONTROLLER 中(并且在这里使用不重要的 MODEL)

    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。这些行为都不适合我。

我的感觉是问题源于顶部,也就是说 Ajax.BeginForm 表单的“ajaxification”根本不会在 IE8 中发生,但我可能是错的,无论如何,我不会知道该怎么做。

有什么线索吗?

谢谢。

4

0 回答 0