2011-12-28 54 views
6

我想每次點擊ActionLink的時間來更新局部視圖。作爲主視圖,我將相同的模型傳遞給部分視圖。問題是部分視圖沒有得到更新。不知道我是否在正確的軌道上。MVC阿賈克斯更新局部視圖

查看

@model MyPoll.Models.Poll 

@Ajax.ActionLink("For", "AddPositive", new RouteValueDictionary { {"id", Model.Id }},new AjaxOptions() { UpdateTargetId = "countsDiv" }) 

<div id="countsDiv"> 
    @Html.Partial("Counts", Model) 
</div> 

部分

@model MyPoll.Models.Poll 

Positive count : @Model.PositiveCount 
Negative count : @Model.NegativeCount 

控制器動作

public ActionResult AddPositive(int id) 
{ 
    Poll poll = db.Polls.Find(id); 
    poll.PositiveCount++; 
    db.SaveChanges(); 

    return View(poll); 
} 

的腳本重新引用以及:

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

是否'MicrosoftAjax.js'和'MicrosoftMvcAjax.js'引用?和jQuery呢? – 2011-12-28 18:47:49

+0

@david,他們是。 – mishap 2011-12-28 19:00:21

+0

您是否做過基本的調試:檢查您是否有任何js錯誤,是否發現請求正在發生,控制器操作是否收到請求,是否實際更新返回的數據? – 2011-12-28 19:05:28

回答

6

修正:

在行動:

public **PartialViewResult** AddPositive(int id) 
    { 
     Poll poll = db.Polls.Find(id); 
     poll.PositiveCount++; 
     db.SaveChanges(); 

     return **PartialView**("Counts", poll); 
    } 
+0

哇,這是有點跛腳。關於爲什麼我們需要分離的任何解釋?你有沒有收到任何錯誤訊息?你怎麼弄出來的? – vbullinger 2012-07-31 15:28:28

+0

@vbullinger,我不記得是什麼錯誤,但我不得不返回PartialView而不是View來解決問題。 – mishap 2012-07-31 15:32:24

+0

謝謝,這也幫助了我。同樣的錯誤,但我不明白爲什麼它不工作。 – 2012-08-14 16:52:26

0

這可能是因爲你最後加載jquery。其他的js依賴於jquery。