如何从html弹出窗口返回值

时间:2009-02-07 12:32:08

标签: javascript jquery asp.net-mvc popup modal-dialog

我需要一种简洁,干净的方式在asp.net mvc(+/- jquery或js)中实现它?

用户点击webform A中的元素; Webform B弹出; 用户与webform B进行交互; 在关闭webform B时,可能是通过提交按钮,webform a中的source元素使用webform B中的值进行更新

感谢。

3 个答案:

答案 0 :(得分:6)

使用ASP.NET MVC,我可能会在页面上呈现一个DIV,最初是隐藏的,如果内容依赖于在初始页面上选择的值,可能通过AJAX。我将使用jQuery UI对话框插件弹出对话框。该对话框可以包含一个提交回服务器的表单。您还可以使用对话框的onclose处理程序来复制对话框中输入的值,以便在页面的其余部分使用。如果您通过AJAX填充对话框,您可以让服务器生成HTML - 例如通过渲染部分视图并返回它 - 或者返回json并在浏览器中动态生成对话框。

答案 1 :(得分:4)

我使用过cookies。我发现这是唯一可行的方法。我正在使用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 :(得分:2)

您可以使用弹出窗口中的javascript通过window.opener调用opener上的函数。因此,当用户单击提交按钮时,弹出窗口可以调用父页面上的函数来传回数据。

我不确定你的要求是什么,但IMO使用ajax听起来有点矫枉过正。如果您需要的是从弹出窗口表单传递给开启者webform的一些表单数据,那么就不需要调用服务器。