2013-06-03 77 views
1

我正在嘗試使用Ajax.BeginForm。當我提交時,我想渲染一個局部視圖。一切工作正常,但InsertionMode = InsertionMode.Replace不起作用,它會在新窗口中打開局部視圖。ASP.NET MVC 3 Ajax.BeginForm重定向到新窗口

我也有一個Ajax.ActionLink在同一頁,並且工作正常。

我已經添加了jquery.unobtrusive-ajax.js,它仍然不起作用。此外,在web.config我有

<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 

這裏是我的代碼視圖:

<div id="div_to_replace"> 
@using (Ajax.BeginForm("Edit", "MyController", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "div_to_replace" })){ 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.name) 
     @Html.ValidationMessageFor(model => model.name) 
    </div> 
    <input type="submit" value="Save" /> 
} 
</div> 

而且我的控制器:

[HttpPost] 
    public ActionResult Edit(MyObject object) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       updateModel(object) 
       return PartialView("_MyPartilView", model); 
      } 
      else 
      { 
       return PartialView(object); 
      } 
     } 
     catch 
     { 
      return PartialView(object); 
     } 
    } 

謝謝!

+1

頁面上是否有「div_to_replace」作爲ID的元素?它不在您提供的代碼中。當我過去使用這個時,我不需要InsertionMode.Replace。 – krillgar

+0

我有div_to_replace作爲ID的元素...我將編輯我的帖子與此更改。 –

+0

瀏覽器控制檯是否顯示任何錯誤? – BrunoLM

回答

1

我已經找到了問題。我使用的是最後一個jquery版本(1.9.1),它不適用於原始的jquery.unobtrusive-ajax.js文件。

我更改爲jquery版本1.4.4(創建一個asp.net mvc 3項目時默認出現的那個),問題就解決了。

0

確保你已經包含了jQuery。

請確保您有一個ID爲div_to_replace的div。

確保UnobtrusiveJavaScriptEnabled是積極的,在你的web.config中Views文件夾

<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
+0

感謝您的回覆,我已將jquery包括在內,並且Unobtrusive JavaScript Enabled = true。 –

+0

在同一頁面我有一個Ajax.ActionLink,它正在工作,但沒有運氣的Ajax.BeginForm –

+0

你的表單是否真的在這個DIV內?也許嘗試將其移出... – BrunoLM