2011-04-20 77 views
42

嘗試擁有一個AJAX動作鏈接,當點擊時,應該對動作方法做一個HttpGet,該動作方法返回一個PartialViewResult並將HTML推送到div中。ASP.NET MVC 3(Razor)Ajax.ActionLink - 我做錯了什麼?

這是我的觀點:

<div id="admin-options" class="admin"></div> 
@Ajax.ActionLink("Show Admin Options", "ShowOptions", "Post", new { area = "Admin" }, new AjaxOptions { UpdateTargetId = "admin-options", HttpMethod = "GET" }) 

下面是操作方法:

public class PostController : Controller 
{ 
    [HttpGet] 
    [Authorize(Roles="Admin")] 
    public PartialViewResult ShowOptions() 
    { 
     return PartialView(); 
    } 
} 

下面是它生成的HTML:

<a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#admin-options" href="/Admin/Post/ShowOptions">Show Admin Options</a> 

看起來好像沒什麼問題。

但不是通過AJAX調用,而是通過瀏覽器URL執行常規HTTP GET,並重定向到/Admin/Post/ShowOptions

顯然我錯過了一些東西 - 但是什麼?

回答

66

確保您的頁面中包含不顯眼的AJAX JavaScript庫。

<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script> 
+2

呃,就是這樣。我有不引人注意的js,但不是AJAX不顯眼。乾杯! – RPM1984 2011-04-20 04:58:24

48

而且使用Razor視圖引擎的...

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

您可能還需要包括在AjaxOptions的InsertionMode選項。如果你排除它,我確定有一個默認行爲,但最好明確地定義它。