2010-02-18 56 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