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 で (ここではモデルの使用は重要ではありません)

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

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

このパターンは、「最新の」ブラウザーを使用する場合にうまく機能します。つまり、3 つの主要ベンダーの最新バージョンです。ただし、Internet Explorer 8 (およびおそらくそれ以前) で何かをしようとすると、[ファイルのダウンロード - セキュリティの警告] ダイアログ ボックスが表示されます。このダイアログ ボックスがポップアップ表示されるのは、ブラウザーが JsonResult (application/json) によって生成されたコンテンツ タイプを処理する方法を認識していないためだと思います。そのため、ユーザーは代わりに戻り値を保存するように求められます。ただし、JsonResult メソッドのコンテンツ タイプを「text/plain」や「text/html」などに変更しても機能しません。代わりに、IE8 はブラウザ ウィンドウをリダイレクトして、送り返された生の JSON を表示します。これらの動作はどちらも私にはうまくいきません。

私は、問題が上から生じていると感じています。つまり、Ajax.BeginForm フォームの「ajax化」は IE8 では発生しませんが、私は間違っている可能性があり、いずれにせよ、そうではありませんそれについて何をすべきかを知っています。

手がかりはありますか?

ありがとう。

4

0 に答える 0