2011-04-14 26 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);