【问题标题】:How to return value from html popup如何从 html 弹出窗口返回值
【发布时间】:2010-10-06 03:19:36
【问题描述】:

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

用户单击网络表单 A 中的元素; 弹出Webform B; 用户与网络表单 B 交互; 在关闭 webform B 时,可能通过提交按钮,webform a 中的源元素将使用来自 webform B 的值进行更新

谢谢。

【问题讨论】:

  • 等等。 MVC 还是 Web 表单?选一个。 Webforms 会做 iframe/postback spaghetti。 MVC 更有可能通过 ajax 提交并在父级中调用回调。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我已经求助于使用 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 的函数

    希望有帮助

    【讨论】:

      【解决方案3】:

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

      我不确定您的要求是什么,但 IMO 使用 ajax 听起来有点矫枉过正。如果您只需要一些来自弹出网络表单的表单数据传递给开启者网络表单,则无需调用服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-22
        • 2023-02-17
        • 2017-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多