2012-02-19 127 views
3

我有一個局部視圖,在向數據庫添加項目時需要更新。mvc部分視圖ajax更新返回部分視圖作爲頁面

的Index.cshtml:

@using (Ajax.BeginForm("Index", "WinEntry", new AjaxOptions { HttpMethod = "POST",  UpdateTargetId = "wingrid", InsertionMode = InsertionMode.Replace})) 
{ 
    @Html.Partial("_winVenue") 
    @Html.Partial("_singleWin") 
} 
<div id="wingrid"> 
    @Html.Partial("_wingrid") 
</div> 

的_singleWin具有提交按鈕

控制器:

[HttpPost] 
     public ActionResult Index(Win win) 
    { 
     win.dealerId = "1234567890"; 
     win.posterid = "chris"; 
     win.posttime = DateTime.Now; 
     wem.addWin(win); 
     IEnumerable<Win> w = wem.getVenueWins(win.venue,win.windate); 
     return PartialView("_wingrid",w); 
    } 

當控制器返回局部視圖_wingrid它返回它作爲一個新的頁面,我正在尋找的行爲就像一個更新在wingrid div內的e面板。

任何幫助,將不勝感激。

+0

您有加入MicrosoftAjax。 js和MicrosoftMvcAjax.js在你想要更新的頁面中? – cpoDesign 2012-02-19 14:30:02

回答

5

由於AJAX表單中的UpdateTargetId = "wingrid"選項,您似乎已經這麼做了。只要確保清除了您在POST控制器操作中從模型狀態中修改的值。否則,HTML輔助仍然可以使用舊值:

[HttpPost] 
public ActionResult Index(Win win) 
{ 
    ModelState.Remove("dealerId"); 
    win.dealerId = "1234567890"; 
    ModelState.Remove("posterid"); 
    win.posterid = "chris"; 
    ModelState.Remove("posttime"); 
    win.posttime = DateTime.Now; 
    wem.addWin(win); 
    IEnumerable<Win> w = wem.getVenueWins(win.venue,win.windate); 
    return PartialView("_wingrid",w); 
} 

而且不要忘了包括jquery.unobtrusive-ajax.js腳本到你的頁面,如果你希望你的Ajax.*傭工的工作:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
+0

感謝達林,我在佈局中加入了一些我整理/刪除的其他腳本。當刪除我刪除不顯眼。 – Chris 2012-02-19 16:13:33