【问题标题】:Ajax actionlink on page load页面加载时的 Ajax actionlink
【发布时间】:2010-02-18 15:01:39
【问题描述】:

基本上我正在构建一个 ASP.NET MVC 应用程序。我有一个搜索页面。它从许多不同的来源搜索结果。为了提高页面加载速度,我决定先从一个来源加载结果,然后在完成搜索其他来源时动态加载更多结果。

到目前为止,我已经返回了第一组结果,并且 Ajax.ActionLink 正在工作,它在 div 中呈现部分视图,该视图显示来自第二个来源的结果。但显然我必须点击 actionLink 才能让它工作。

我想知道的是如何使用 actionlink 在页面加载时触发,以便进一步的结果自动到达?我可以在 javascript/jquery 中重写 actionlink 并在页面加载时触发它,或者这种事情的最佳做法是什么?

【问题讨论】:

  • 基本上我的 actionLink 看起来像这样 "" 这在 jquery ajax 中会是什么样子?
  • 我们只是在页面加载后使用 javascript 点击链接。这样做的一个很好的副作用是,如果加载局部视图的 ajax 调用失败,用户可以再次单击链接。

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


【解决方案1】:

我已经使用 JQuery 来动态加载 UI:

$.get("/controller/action", function(html) {
   //insert Html into page
   $("#rootelement").html(html);
});

您可以让您的操作返回要注入的部分视图:

public ActionResult Act()
{
    return PartialView("SomeView");
}

此外,您可能希望查看 MVC 未来中的内容,例如 AsyncController 或 RenderAtion 辅助方法(尽管 RenderAction 不是动态的)。也许其中一些项目也可以工作。没有亲自使用它们。

HTH。

【讨论】:

  • 这正是我所追求的! :) 非常感谢!
【解决方案2】:

我真的不明白你的问题的重点,你想在结果准备好后立即更新结果窗格吗?我认为您的方法不正确,您将如何检索您在先前请求中开始的搜索结果?我建议要么从客户端触发不同的异步请求(每个请求都用于查询每个不同的源),要么使用类似 push-ajax 的东西(从未尝试过)。

【讨论】:

  • 我想在已经存在的结果中添加更多结果。它现在使用 ActionLink 为我执行此操作,但不必单击操作链接,我希望来自第二个源的结果从页面加载时发送的 ajax 请求中自行出现。
  • 那么,在每个后续请求中,您将查询不同的源?为什么不为 OnSuccess 事件指定一个处理程序,在该事件中指定一个超时,然后再触发另一个搜索请求?您可以通过设置要调用 AjaxOptions 的 OnSuccess 属性的 javascript 方法的名称来指定处理程序。
  • 我喜欢这个主意!当我开始添加更多源系统时,我将使用您所描述的 OnSuccess 属性。然而,由于我目前对 jquery 的掌握不佳,我仍在努力获得一个 ajax get 来复制我的 actionLink 为我做的事情。这就是我目前的问题所在。
猜你喜欢
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2012-03-28
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多