2011-04-14 31 views
0

如何使用jQuery填充部分视图?结果:点击链接时没有任何事情发生。如何使用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"]); 
} 
+0

@mazher,你检查了服务器返回的值('mydata'变量)吗?一个简单的警报会告诉你是否从服务器获得正确的html。 – VinayC 2011-04-14 08:48:56

+0

你用FireBug看了吗? – 2011-04-14 08:53:27

+0

事情是调用方法链接/链接被调用,但它不会返回任何东西 – maztt 2011-04-14 08:55:05

回答

0

什么呢LinkManagementRepository.GetAllOrganizationLinks(信纸)?我不认为你需要设置ViewData,但直接返回repostiroy调用。

1

究竟什么是这样的:

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

为什么不使用强类型的意见,而不是:

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

摆脱这种ViewData瘟疫。

+0

你不知道吗?这是一个弱而强大的类型观点的集团。 :)尽管这不是他的问题的答案,但@mazhar的我还是+1,不会做这样一件可怕的事情。 ** ** EVER。 – 2011-04-14 09:54:08

0

您应该尝试使用.load

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

例如$('div#link).load('yourPartialViewResultAction', {Letter: id }, null);