【问题标题】:How to use Ajax.ActionLink?如何使用 Ajax.ActionLink?
【发布时间】:2011-07-31 23:24:36
【问题描述】:

首先,asp.net mvc中Ajax.*方法的文档在哪里?

Ajax.ActionLink 可以用来调用动作、获取局部视图、打开模态窗口并将内容放入其中吗?

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

当然,之前有人问过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

【讨论】:

  • 你也应该在你的答案中加上“your_js_function()”。
  • 如果我想使用图像作为锚显示而不是单词 show,我该怎么办?
【解决方案2】:

@Ajax.ActionLink 需要 jQuery AJAX Unobtrusive 库。可以通过nuget下载:

Install-Package Microsoft.jQuery.Unobtrusive.Ajax

然后将此代码添加到您的视图中:

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")

【讨论】:

  • 这是我在其他文档中找不到的关键点。
  • @Rozwel 我也无法在任何地方找到它。多么晦涩难懂的“陷阱”。微软提示:不要这样做。
  • 先做这个,添加这个 nugget 包即使你在 VS 2017 中,这个问题存在,我们必须手动将此包添加到项目中,以便使用 @Ajax 的任何东西在你的 cshtml 中工作跨度>
  • 好吧,为此 +1,因为所有答案都未能添加关于图书馆的这一关键点。
【解决方案3】:

对我来说,这在我通过 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>

【讨论】:

    【解决方案4】:

    Ajax.ActionLink 只向服务器发送一个 ajax 请求。前面发生的事情实际上取决于返回的数据类型以及您的客户端脚本如何处理它。您可以为 ajax 调用或 json、xml 等发送部分视图。但是 Ajax.ActionLink 具有不同的回调和参数,允许您针对不同的事件编写 js 代码。您可以在发送请求或onComplete 之前做一些事情。同样,您有一个 onSuccess 回调。这是您放置用于操作服务器返回的结果的 JS 代码的地方。您可以简单地将其放回 UpdateTargetID 中,或者您可以使用 jQuery 或其他一些 JS 库对这个结果做一些花哨的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多