Как вызвать javascript на странице хоста MVC, когда вызов ajax в частичном представлении завершен?

У меня есть частичное представление Asp.net MVC, которое используется для поиска. Он выполняет вызов Ajax для получения результатов. После получения результатов и их отображения в области результатов пользователь может щелкнуть ссылку в любой из строк результатов, чтобы выбрать один из результатов поиска. Когда пользователь нажимает на ссылку, чтобы выбрать один из результатов поиска, он делает почтовый запрос Ajax для обновления некоторого состояния. Как только этот вызов Ajax завершен, мне нужно перенаправить на другую страницу, но страница назначения зависит от того, на какой странице находится пользователь. Это частичное представление поиска будет размещено на нескольких страницах, и местоположение перенаправления будет разным для каждой из основных страниц. Я не могу придумать способ сделать это, который имел бы смысл и не слишком связывал частичное представление со страницей хостинга (или наоборот).

Я предполагаю, что другим вариантом может быть перенаправление на другую страницу после завершения вызова Ajax выбора (это, в конечном счете, цель), но не будет ли проглочен результат перенаправления в вызове Ajax?

Или есть способ вместо этого иметь кнопку или ссылку в каждой строке, которая вызывает запрос на публикацию, который может вернуть результат перенаправления с пунктом назначения на основе вызывающей страницы?


person SteveBering    schedule 16.07.2009    source источник


Ответы (1)


Я закончил тем, что использовал своего рода шаблон TemplateMethod, чтобы заставить эту работу работать. В своем частичном я добавил функцию JavaScript:

function onActionCompleted() {
    DoSomethingLocal();
    if (typeof DoSomethingInParentPage == 'function') {
        DoSomethingInParentPage();
    }
} 

Это проверяет, существует ли функция и является ли она функцией, и если это так, то вызывает функцию. Чтобы это работало, страница размещения может выбрать реализацию метода DoSomethingInParentPage для выполнения некоторого действия, когда действие завершено в частичном. Я не уверен, как проверить соответствие параметров, но, по крайней мере, я получаю вызов, когда партиал закончил свою работу.

person SteveBering    schedule 22.07.2009