MVC4 C#
我在整个应用程序中都使用 Ajax.BeginForm,它运行良好。当我创建并测试 ChkNum 视图时,它工作得很好。突然它停止工作了,我不知道为什么。它在其他视图中仍然有效,但在 ChkNum 视图中,当 post 操作中的 ModelState.IsValid 测试失败并返回视图时,返回的页面是空白的(我得到页眉和页脚但没有正文)。适当的脚本随站点一起加载并在所有其他视图中工作。
ChkNum 视图:
@model ModelVM
@{ ViewBag.Title = "Title"; }
<script type="text/javascript">
var onSuccess = function (result) {
if (result.url) {
window.location.href = result.url;
}
}
</script>
<div id="CkNmFrm">
@Html.ValidationSummary(true) <h2>Page Title</h2>
<span class="h5-sty">Field1: @Model.Field1 Field2: @Model.Field2</span><br />
@using (Ajax.BeginForm("ChkNum", new AjaxOptions() {OnSuccess = "onSuccess", UpdateTargetId = "CkNmFrm", HttpMethod = "Post"}))
{
@Html.AntiForgeryToken()
<br />
<span class="h4-sty">Field3: </span>
<span class="ebwid">@Html.EditorFor(m => m.Field3) </span>
@Html.ValidationMessageFor(m => m.Field3)<br /><br />
<span><input type="submit" value="Submit" /></span>
<br /><br />
}
</div>
ChkNum 动作:
public ActionResult ChkNum(int id)
{
// code to build vM
return View(vM);
}
[HttpPost, ValidateAntiForgeryToken]
public ActionResult ChkNum(ModelVM vM)
{
if (ModelState.IsValid)
{
//code
}
ModelState.AddModelError(string.Empty, "Fix Error");
return PartialView("ChkNum", vM);
}
我已经检查了几次代码并将其与工作操作和视图进行了比较,并没有发现任何问题。我在返回的 PartialView 处设置了一个断点,它正确地通过了 CkNmFrm。
我想不出我在应用程序中更改的任何其他可能导致此问题的内容。
在我的智慧结束这一点。非常感谢任何帮助。
更新: 我使用的是 IE 9。我刚刚在 Chrome 中尝试过,问题就消失了。所以现在的问题是为什么它在除 ChkNum 之外的多个视图中都有效,而且问题是 IE 特有的?