如何使用jQuery填充局部视图?

时间:2011-04-14 08:41:45

标签: jquery asp.net ajax asp.net-mvc-2

如何使用jQuery填充局部视图?结果:点击链接时没有任何事情发生。

<script type="text/javascript">
$(document).ready(function () {
        $('.block').click(function () {
            var id = this.id;
            $.ajax({
                url: "/Link/Link",
                data: { Letter: id },
                success: function (mydata) {
                    var dom = $(mydata);
                    $("#link").empty().append(dom);
                },
                type: "POST"
            });
            return false;
        });
    });
</script>  

<a href="<%=Url.Action("Link",new {Letter="A"}) %>" id="A" class="block">A</a>
<a href="<%=Url.Action("Link",new {Letter="B"}) %>" id="B" class="block">B</a>

<div id="link">
  <% Html.RenderPartial("LinkUC", ViewData["Letter"]); %>
</div>

控制器

public ActionResult Link(string Letter)
{
    ViewData["Letter"] = LinkManagementRepository.GetAllOrganizationLinks(Letter);

    return PartialView("LinkUC",ViewData["Letter"] );  
}

3 个答案:

答案 0 :(得分:1)

这究竟是什么:

return PartialView("LinkUC",ViewData["Letter"] );

为什么不使用强类型视图:

public ActionResult Link(string letter)
{
    var model = LinkManagementRepository.GetAllOrganizationLinks(letter);
    return PartialView("LinkUC", model);
}

摆脱这场ViewData瘟疫。

答案 1 :(得分:0)

LinkManagementRepository.GetAllOrganizationLinks(Letter)是什么?我认为您不需要设置ViewData,而是直接返回repostiroy调用。

答案 2 :(得分:0)

您应该尝试使用.load

将其指向一个返回PartialViewResult的操作,因此响应中的HTML将被加载到您调用它的包装集中。

e.g。 $('div#link).load('yourPartialViewResultAction', {Letter: id }, null);