阿贾克斯.BeginForm返回IE9
问题描述:
MVC4 C#空白视图阿贾克斯.BeginForm返回IE9
我使用Ajax.BeginForm在我的应用程序,它是伟大的工作。当我创建并测试ChkNum视图时,它工作得很好。突然它停止了工作,我找不出原因。它仍然适用于其他视图,但在ChkNum视图中,当帖子操作中的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。
我不能想到我在应用程序中更改了可能会导致此问题的其他任何内容。
在我的智慧结束这一个。任何帮助不胜感激。
UPDATE: 我使用的是IE 9 我只是尝试在Chrome和问题走了。所以现在的问题是,为什么除了ChkNum之外,它在几个视图中都有效,这个问题对于IE来说是特别的?
答
我终于找到了问题。在视图的最后,我有一大段注释掉的代码(@ * * @)。在中间的右边是一个
</div>
没有被注释掉的结束标签。当我删除它时,问题就被清除了。叹了口气,浪费了几个小时。我开始删除整个尴尬的POST,但已决定放弃它,希望其他人可以从我的愚蠢中学习。
您正在返回从您的ActionResult返回PartialView(“ChkNum”,vM);但是您是否有名称为ChkNum的部分视图?我问过这个问题是因为你没有提到任何带有这个名字的局部视图。我可以看到ChkNum作为视图,但不是作为部分视图 – 2013-02-13 04:54:22
不知道你在做什么。 ChkNum是我作为PartialView加载的视图。同样,这个确切的代码在多个视图中工作,只在这个特殊视图中失败,并且只在IE中失败。 – Joe 2013-02-13 06:48:08