2013-03-14 24 views
0

在閱讀了這裏的其他幾篇文章之後,我已經嘗試加載部分視圖來點擊鏈接(文本鏈接實際上可能會更改爲一旦我通過這個概念證明階段的圖像)。問題是,我被引導到上點擊局部視圖,而不是它填充我點擊鏈接視圖內一個div:嘗試使用Ajax加載局部視圖.ActionLink

佈局:

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

的觀點:

@Ajax.ActionLink("Item 1 Ajax", "Details", "Portfolio", new { name = "test" }, new AjaxOptions 
         { 
          HttpMethod = "Post", 
          InsertionMode = InsertionMode.Replace, 
          UpdateTargetId = "row1Content", 
          OnComplete = "portfolioItemLoaded" 
         }) 

<div id="row1content"></div> 

<script type="text/javascript"> 
     function portfolioItemLoaded() { 
      alert("Done"); 
     } 
    </script> 

控制器:

public class PortfolioController : Controller 
    { 
     public ActionResult Details(string name) 
     { 
      return PartialView(name); 
     } 
    } 

局部(顯然命名test.cshtml):

<p>Item 1 test</p> 

我是否錯過了明顯的東西?這是我第一次嘗試在MVC中使用AJAX,所以可能會有一兩個學校的學生錯誤。

我打算有幾個不同的Ajax動作鏈接調用不同的部分視圖,因此我將名稱傳入控制器。

回答

3

代碼固定

你想嘗試這個,你有更好的控制,如果錯誤,等等.... HTML與助手

@Html.ActionLink("Item 1 Ajax", "Details", "Portfolio", Nothing, New With {.Id = "myLink"}) 

的JavaScript

<script type="text/javascript"> 

$(document).ready(function() { 

    $('#myLink').click(getIt); 

}); 

function getIt() { 
     $.ajax({ 
      type: "POST", 
      url: $(this).attr('href'), 
      error: function() { 
       //show error handler 
       }, 
      success: function (r) { 
       $('#row1content').html(r); 
      } 
     }); 

     return false; 
    } 

</script> 
+0

還算可以不能讓它工作。如果我將函數返回爲true,那麼它會像以前一樣重定向到部分。如果我返回false,那麼沒有任何反應。我使用函數將部分html中的結果返回到準備寫入div的結果中。我需要調用除了不顯眼的ajax jquery JS之外的任何其他東西嗎? – 2013-03-14 20:24:38

+0

對不起,我用記事本寫了一些東西,跳過了一些東西,代碼已經被編輯和測試過了。 – 2013-03-14 21:08:05