2010-02-18 52 views
1

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

到目前为止,我有第一组返回的结果和一个Ajax.ActionLink工作,该工作在div中呈现局部视图,该视图显示来自第二个源的结果。不过,显然我必须点击actionLink才能使其工作。

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

+0

基本上我的actionLink看起来像这样:<%= Ajax.ActionLink(“Search More”,“searchMoreSystems”,“search”,new {searchID = anySearchID},new AjaxOptions {UpdateTargetId =“moreResults”})%>这在jquery ajax中看起来像什么? – Boob 2010-02-18 15:18:23

+0

我们只是在页面加载时使用javascript来点击链接。这样做的一个好的副作用是,如果ajax调用加载partialview失败,用户可以再次单击该链接。 – 2017-02-17 01:30:11

回答

3

我使用jQuery来动态加载的用户界面:

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

你可以有你的行动返回一个局部视图注入:

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

此外,您可能想看看事情在MVC期货中,像AsyncController或RenderAtion助手方法(尽管RenderAction不是动态的)。也许其中一些项目也可能起作用。没有亲自使用它们。

HTH。

+0

这就是我以后的最新情况! :) 非常感谢你! – Boob 2010-02-18 19:07:57

0

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

+0

我想在结果中添加更多结果。它在ActionLink的那一刻为我完成,但不必单击动作链接,我希望第二个源的结果通过加载页面时发送的ajax请求自行显示。 – Boob 2010-02-18 15:54:35

+0

然后,在随后的每个请求中,您将查询不同的来源?为什么不指定OnSuccess事件的处理程序,在该事件中指定超时之后再触发另一个搜索请求?您可以通过设置要在AjaxOptions的OnSuccess属性上调用的javascript方法的名称来指定处理程序。 – uvita 2010-02-18 16:24:56

+0

我喜欢这个想法!当我开始添加更多源系统时,我将按照您所描述的使用OnSuccess属性。然而由于我对jquery的掌握不够,目前我仍然努力获得一个ajax get,它复制了我的actionLink为我做的事情。这是我目前的问题所在。 – Boob 2010-02-18 16:55:58