ASP.NET MVCには、アクションに投稿し、同じビューで応答をレンダリングするメインの標準フォームがあります。
問題は、応答タイプがapplication / x-javascriptとして返され、その結果、ブラウザーがHTMLをテキストとしてレンダリングしていることです。
JavaScriptResultを返すアクションにポストバックするフォームをレンダリングするマスターページにいくつかの部分的なビューが含まれていることが原因に問題を絞り込みました。
これらの部分的なビュー参照を削除すると、メインフォームの投稿応答からの応答タイプは必要なtext/htmlです。
JavaScriptResultアクションがメインフォームの投稿に干渉するのはなぜですか。私はこのアクションに投稿していませんが、MVCが応答コンテンツタイプをapplication / x-javascriptであると推測するのはなぜですか?
基本的なメインフォーム:
@using (Html.BeginForm("TestSearch", "TestSearch", FormMethod.Post))
{
....
}
[HttpPost]
public ActionResult TestSearch(TestSearchInfo testSearchInfo)
{
...
return View(testSearchInfo);
}
レイアウトページ:
@{Html.RenderPartial("~/Views/Account/LoginOrRegister.cshtml");}
Which is a form that posts to...
[HttpPost]
public JavaScriptResult Login(LoginInfo loginInfo)
{
}
アップデート:
主要な問題は、メインフォームの送信ボタンを押すと、MVC ajaxが有効になっている他のフォームもポストバックしているため、両方のアクションが実行され、JavaScriptResultを返すフォームが次のようになることです。 2番目に発砲しています。この動作を防ぐ方法がまだわかりません...
アップデート:
以下の回答を参照してください