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特有的?
答案 0 :(得分:0)
我终于找到了问题。在视图的最后,我有一大块注释掉的代码(@ * * @)。正好在中间是一个
</div>
未注释掉的结束标记。当我删除它时问题清除了。叹了口气,浪费了几个小时。我开始删除整个令人尴尬的POST,但决定放弃它,希望别人可以从我的愚蠢中吸取教训。