Как вернуть значение из всплывающего окна HTML - PullRequest
4 голосов
/ 07 февраля 2009

Мне нужен краткий, чистый способ реализовать это в asp.net mvc (+/- jquery или js)?

Пользователь щелкает элемент в веб-форме A; Webform B выскакивает; Пользователь взаимодействует с веб-формой B; При закрытии веб-формы B, возможно, с помощью кнопки отправки, элемент источника в веб-форме a обновляется значением веб-формы B

Спасибо.

Ответы [ 3 ]

6 голосов
/ 07 февраля 2009

В ASP.NET MVC я, вероятно, отобразил бы DIV на странице, изначально скрытой, возможно, через AJAX, если содержимое зависит от значений, выбранных на начальной странице. Я бы использовал плагин JQuery UI для всплывающего окна. Диалог может содержать форму, которая отправляется обратно на сервер. Вы также можете использовать обработчик onclose для диалогового окна, чтобы скопировать значения из входных данных в диалоговом окне для использования на остальной части страницы. Если вы заполнили диалог через AJAX, вы могли бы заставить сервер генерировать HTML - скажем, путем частичного отображения и возврата его - или вернуть json и сгенерировать диалог на лету в браузере.

4 голосов
/ 07 февраля 2009

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

    function selectValue(id, name) {
      SetCookie("_someuniqueprefix_RetID", id);
      SetCookie("_someuniqueprefix_RetValue", name);
      parent.parent.GB_CURRENT.hide();
    }

Затем на моей странице вызова я запускаю диалоговое окно, которое отображает частичное в GrayBox:

$(function() {
    var selectUrl = '/_somecontroller/Select';
    // attach a method to the chooseButton to go and get a list of
    // contact persons to select from
    $("#chooseButton").click(function() {
        GB_showCenter('Select My thing', selectUrl, 500, 620, function() {
            var id = GetCookie("_someuniqueprefix_RetID");
            var value = GetCookie("_someuniqueprefix_RetValue");
            DeleteCookie("_someuniqueprefix_RetID", "/", "");
            DeleteCookie("_someuniqueprefix_RetValue", "/", "");
            $("#MyID").val(id);
            $("#MyName").val(value);
        });
    });

});

Также вам нужно получить функцию из Интернета для SetCookie и GetCookie

Надеюсь, что поможет

2 голосов
/ 07 февраля 2009

Вы можете использовать javascript из всплывающего окна для вызова функций на средстве открытия через window.opener. Таким образом, ваше всплывающее окно может вызвать функцию на родительской странице для передачи данных обратно, когда пользователь нажимает кнопку отправки.

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

...