ASP.NET MVC 3(Razor)Ajax.ActionLink – 我做错了什么?

尝试有一个AJAX动作链接,当点击时,应该做一个HttpGet到一个动作方法,它返回一个PartialViewResult和HTML推到一个div。

这是我的观点:

 <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,然后redirect到/ Admin / Post / ShowOptions

显然我错过了什么 – 但什么?

确保您的页面中包含不显眼的AJAX JavaScript库。

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

而对于那些使用Razor视图引擎的人…

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

您可能还希望在AjaxOptions中包含InsertionMode选项。 如果你排除它,我确定有一个默认的行为,但最好是明确地定义它。