【发布时间】:2011-07-31 23:24:36
【问题描述】:
首先,asp.net mvc中Ajax.*方法的文档在哪里?
Ajax.ActionLink 可以用来调用动作、获取局部视图、打开模态窗口并将内容放入其中吗?
【问题讨论】:
首先,asp.net mvc中Ajax.*方法的文档在哪里?
Ajax.ActionLink 可以用来调用动作、获取局部视图、打开模态窗口并将内容放入其中吗?
【问题讨论】:
当然,之前有人问过similar question。为 ajax 请求设置控制器:
public ActionResult Show()
{
if (Request.IsAjaxRequest())
{
return PartialView("Your_partial_view", new Model());
}
else
{
return View();
}
}
根据需要设置操作链接:
@Ajax.ActionLink("Show",
"Show",
null,
new AjaxOptions { HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "dialog_window_id",
OnComplete = "your_js_function();" })
请注意,我使用的是 Razor 视图引擎,并且您的 AjaxOptions 可能会根据您的需要而有所不同。最后将其显示在模态窗口上。建议使用jQuery UI dialog。
【讨论】:
@Ajax.ActionLink 需要 jQuery AJAX Unobtrusive 库。可以通过nuget下载:
Install-Package Microsoft.jQuery.Unobtrusive.Ajax
然后将此代码添加到您的视图中:
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
【讨论】:
对我来说,这在我通过 NuGet 下载 AJAX Unobtrusive 库后有效:
Search and install via NuGet Packages: Microsoft.jQuery.Unobtrusive.Ajax
比在视图中添加对 jquery 和 AJAX Unobtrusive 的引用:
@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"> </script>
【讨论】:
Ajax.ActionLink 只向服务器发送一个 ajax 请求。前面发生的事情实际上取决于返回的数据类型以及您的客户端脚本如何处理它。您可以为 ajax 调用或 json、xml 等发送部分视图。但是 Ajax.ActionLink 具有不同的回调和参数,允许您针对不同的事件编写 js 代码。您可以在发送请求或onComplete 之前做一些事情。同样,您有一个 onSuccess 回调。这是您放置用于操作服务器返回的结果的 JS 代码的地方。您可以简单地将其放回 UpdateTargetID 中,或者您可以使用 jQuery 或其他一些 JS 库对这个结果做一些花哨的事情。
【讨论】: