如何从HTML弹出窗口返回值

4
我需要一种简洁、清晰的方法来在asp.net mvc中实现这个功能 (+/- jquery或js)?
用户点击Webform A中的一个元素; Webform B弹出; 用户与Webform B进行交互; 关闭Webform B,可能是通过提交按钮,在Webform A中的源元素将会被更新为Webform B中的值。
谢谢。

等等。MVC 或 Webforms?选一个。Webforms 会变成 iframe/postback 的混乱。MVC 更可能通过 AJAX 提交并在父级调用回调函数。 - Crescent Fresh
3个回答

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

4

我已经采用了使用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调用父页面上的函数。因此,当用户单击提交按钮时,您的弹出窗口可以调用父页面上的函数来传递数据回去。

我不确定您的要求是什么,但在我看来,对于这个问题使用ajax似乎有些过度了。如果您只需要从弹出式网页表单中传递一些表单数据到父网页表单中,则无需向服务器发出请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接