2009-02-07 5 views
4

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

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

Спасибо.

+0

Подождите. MVC или Webforms? Выбери один. Webforms будет делать спагетти iframe/postback. MVC, скорее всего, будет отправляться через ajax и вызывать обратный вызов в родительском. –

ответ

6

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

3

Я прибегал к использованию файлов cookie. Я нашел, что это единственный надежный способ сделать это. Я использую 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

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

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