0

ASP.NET MVC サイトの複数のページで奇妙な問題が発生しています。フォームを POST し、モデルが有効でない場合、エラーを確認できるように同じビューを返そうとしますが、ページがリロードされる代わりに、ファイルが「アプリケーション/json」形式で。以下のコードからわかるように、コントローラー メソッドは JsonResult ではなく ActionResult を返します。

[HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        var isValid = IsUserAuthenticated(model);
        if (isValid)
        {
            if (!String.IsNullOrEmpty(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return User.IsInRole("Administrator")
                           ? RedirectToAction("Index", "Admin")
                           : RedirectToAction("Index", "Home");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

フォームに入力せずに送信すると、モデルが (正しく) 検証に失敗することがわかりますが、最後の行に到達すると "return View(model);" になります。-期待するすべてのHTMLを返しますが、コンテンツタイプは「application / json」に設定されています。コードのどこにも content-type を設定していないため、なぜこれが発生するのかわかりません。他のページでも同じようなことが起きているので、何か根本的なところが間違っているのではないかと思っていますが、よくわかりません。

何かご意見は?

4

1 に答える 1

0

私はついに問題を理解しました...それは私が導入したエラーでした、私は言うのが恥ずかしいです. ただし、これは非常に簡単な間違いであるため、他の誰かが遭遇した場合に備えて、ここに問題を記録したいと思います. 「Site.Master」ページで使用していた「Html.RenderAction(..)」呼び出しが原因でした。そのアクションは JsonResult を返します。元の投稿でエラーが発生した場合、マスター ページが読み込まれるとすぐに JsonResult を返すアクションも実行されるため、この問題が発生します。

最終的に「Html.RenderAction(...)」呼び出しを削除し、必要な HTML をハードコーディングしました。

それが役立つことを願っています

于 2010-07-29T17:49:03.023 に答える