1

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來說是特別的?

+0

您正在返回從您的ActionResult返回PartialView(「ChkNum」,vM);但是您是否有名稱爲ChkNum的部分視圖?我問過這個問題是因爲你沒有提到任何帶有這個名字的局部視圖。我可以看到ChkNum作爲視圖,但不是作爲部分視圖 – 2013-02-13 04:54:22

+0

不知道你在做什麼。 ChkNum是我作爲PartialView加載的視圖。同樣,這個確切的代碼在多個視圖中工作,只在這個特殊視圖中失敗,並且只在IE中失敗。 – Joe 2013-02-13 06:48:08

回答

0

我終於找到了問題。在視圖的最後,我有一大段註釋掉的代碼(@ * * @)。在中間的右邊是一個

</div> 

沒有被註釋掉的結束標籤。當我刪除它時,問題就被清除了。嘆了口氣,浪費了幾個小時。我開始刪除整個尷尬的POST,但已決定放棄它,希望其他人可以從我的愚蠢中學習。