【问题标题】:Why my ASP.NET MVC4 ActionLink Ajax code doesn't make an async request?为什么我的 ASP.NET MVC4 ActionLink Ajax 代码不发出异步请求?
【发布时间】:2012-12-05 13:20:32
【问题描述】:

为什么这段代码不能正常工作?显示了链接,但是当我单击它时,请求不是异步发出的。相反,浏览器发出了一个正常的请求! :/ 注意:我使用的是 ASP.NET MVC 4!

这是我的 CSHTML 块代码:

<div id="latestReviews"></div>

@Ajax.ActionLink("Click here to see the latest review", "LatestReviews", "Home", null, new AjaxOptions {
    UpdateTargetId =  "latestReviews",
    InsertionMode = InsertionMode.InsertAfter,
    HttpMethod = "GET"
})

这是我的控制器动作:

    [HttpGet]
    public PartialViewResult LatestReviews(){
        var review = RestaurantReviewQueries.FindTheLatest(_db.Reviews, 1).Single();
        return PartialView("_Review", review);
    }

【问题讨论】:

  • 请改写您的标题以反映您的要求。
  • the request is not asynchronously made. Instead the browser made a normal request。你怎么知道调用不是异步的?你的整个页面最后刷新了吗?我不确定您所说的Instead the browser made a normal request 是什么意思
  • 没错!页面完全刷新! "Normal request" = not async ahaha 浏览器没有在 div 中显示结果,而是转到另一个页面并显示内容
  • 在这种情况下不确定:您有一个 id 为 latestReviews 的 div,并且根据需要设置为 UpdateTargetId。你的代码看起来不错。我不确定这个问题是否是由于您返回的部分视图可能最初是作为普通视图生成的,该视图将自动使用可能导致此类问题的 _layout 页面。如果您创建一个新的基本局部视图并返回它,它会导致同样的问题吗?
  • 不!但是我尝试返回简单的文本并且发生了同样的情况。这很奇怪。

标签: asp.net ajax asp.net-mvc-4


【解决方案1】:

我终于解决了这个问题!在 _Layout.cshtml 中有一个可选部分可以在视图中呈现,称为“脚本”。我所做的只是渲染“脚本”部分:

@section scripts {
     <script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
}

    ...

<div id="latestReviews"></div>

@Ajax.ActionLink("Click here to see the latest review", "LatestReviews", "Home", null, new AjaxOptions {
    UpdateTargetId =  "latestReviews",
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "GET"
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2011-02-02
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多