2010-02-18 3 views
1

В основном Im создает приложение ASP.NET MVC. У меня есть страница поиска. Он ищет результаты из разных источников. Чтобы ускорить загрузку страницы, я решил сначала загрузить результаты из одного источника, а затем динамически загружать больше результатов по мере того, как он заканчивает поиск других источников.Ajax actionlink на загрузке страницы

До сих пор у меня появился первый набор результатов и работа Ajax.ActionLink, которая отображает частичный вид в div, который показывает результаты из второго источника. Однако, очевидно, я должен нажать на actionLink, чтобы заставить его работать.

Что мне интересно, как использовать actionlink для запуска загрузки страницы, чтобы дальнейшие результаты поступали автоматически? могу ли я переписать actionlink в javascript/jquery и запустить его на загрузку страницы или что это лучшая практика для такого рода вещей?

+0

В основном мое действиеLink выглядит так: «<% = Ajax.ActionLink (« Поиск больше »,« searchMoreSystems »,« поиск », новый {searchID = anySearchID}, новый AjaxOptions {UpdateTargetId =" moreResults "})%> что это будет выглядеть в jquery ajax? – Boob

+0

Мы только что использовали javascript, чтобы щелкнуть ссылку, как только страница загрузится. Хорошим побочным эффектом этого является то, что если вызов ajax для загрузки частичного отказа не удастся, пользователь может просто щелкнуть ссылку еще раз. –

ответ

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

Thats точно, что я был после! :) Большое спасибо! – Boob

0

Я действительно не понимаю смысла в вашем вопросе, вы хотите обновить область результатов, как только результаты будут готовы? Я думаю, что ваш подход не является правильным, как вы собираетесь получать результаты поиска, который вы начали в предыдущем запросе? Я предлагаю либо запускать различные асинхронные запросы с клиентской стороны (каждый из них для запроса каждого из разных источников), либо использовать что-то вроде push-ajax (никогда не пробовал это).

+0

Я хочу добавить дополнительные результаты к уже имеющимся результатам. Он делает это для меня в минуту с помощью ActionLink, но вместо того, чтобы щелкнуть ссылку на действие, я хочу, чтобы результаты из второго источника отображались там, где есть собственный запрос ajax, отправленный на загрузку страницы. – Boob

+0

Затем, при каждом последующем запросе вы будете запрашивать другой источник? Почему вы не указываете обработчик события OnSuccess, в котором указывается тайм-аут, после которого вы запускаете другой запрос на поиск? Вы можете указать обработчик, указав имя метода javascript для вызова свойства OnSuccess AjaxOptions. – uvita

+0

Эта идея мне нравится! Когда я начну добавлять дополнительные исходные системы, я буду использовать свойство OnSuccess, как вы описали. Однако из-за моего плохого понимания jquery на данный момент я все еще изо всех сил пытаюсь получить ajax, который повторяет то, что для меня делает actionLink. Здесь моя проблема лежит в данный момент. – Boob

Смежные вопросы