MVC Ajax更新局部视图

6

我希望每次单击ActionLink时都能更新局部视图。我将相同的模型传递给了主视图和局部视图。问题是局部视图没有得到更新。我不确定自己是否正确。

视图:

@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>

MicrosoftAjax.jsMicrosoftMvcAjax.js 被引用了吗?还有 jQuery 吗? - David Fox
你做了基本的调试吗:检查是否有任何JS错误,是否看到请求已被发出,控制器动作是否接收请求,返回的数据是否确实已更新? - Nadir Muzaffar
如果Microsoft库依赖于jQuery库,您可能需要先引用jQuery库再引用其他库。 - Nadir Muzaffar
@Nadir MicrosoftMvcAjax和MicrosoftAjax不依赖于jQuery,但jquery.unobtrusive可能会依赖。 - David Fox
2个回答

6

固定:

在行动中:

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

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

哇,这有点糟糕。为什么我们需要分离呢?你收到了任何错误消息吗?你是怎么想出来的? - vbullinger
@vbullinger,我不记得那是什么错误了,但我不得不返回PartialView而不是View来解决问题。 - mishap
谢谢,这也帮助了我。出现了同样的错误,但我想不出为什么它不起作用。 - Serhiy Prysyazhnyy

0

可能是因为您最后加载了jquery。其他js依赖于jquery。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接