在 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 的那个是正在第二次开火。我仍然不确定如何防止这种行为......
更新:
请看下面的答案