尝试使用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,并重定向到 / Admin / Post / ShowOptions 。
显然我错过了什么 - 但是什么?
答案 0 :(得分:66)
确保您的网页中包含不显眼的AJAX JavaScript库。
<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script>
答案 1 :(得分:48)
对于那些使用Razor视图引擎的人......
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
答案 2 :(得分:1)
您可能还希望在AjaxOptions中包含InsertionMode选项。如果你排除它,我确定会有一个默认行为,但最好是为这样的事情明确定义它。