为什么我的window.dialogArguments未定义

时间:2012-10-23 20:31:09

标签: javascript asp.net modal-dialog

我需要在模态对话框中打开一个.aspx页面。这是我用来打开对话框的JS代码:

        if (url) {
            var fullPath = url + "/Validation.aspx";
        }
        else {
            alert("Could not find the location of the merge dialog.  Please contact your System admin and have them update the configuration entity.");
            return;
        }

        var features = "unadorned:yes;scroll:yes;resizable:yes;status:yes;dialogHeight:480px;dialogWidth:480px;";

        var args = {
            selected: selectedIds,
            page: pageIds,
            fetchXml: xml,
            entity: "xyz"
        };

        window.showModalDialog(fullPath, args, features);

在我的validation.aspx页面中,我需要能够获取JS参数,将它们分配给隐藏字段,然后重新发布,这样我就可以使用那些arg值服务器端。

这是我的.aspx页面中的JS代码:

window.onload = function(){        
    if (!window.dialogArguments)
        return;

        var args = window.dialogArguments;
        ...
}

我已经看到很多这样的例子在整个网络上都有效。 但是......在我的.aspx页面中,我的window.dialogArguments总是未定义的。是什么赋予了?有人有任何想法或解决方案吗?

1 个答案:

答案 0 :(得分:3)

我的假设是ASPX对话框页面正在跨域打开。

这意味着您的父网页位于一个域名http://abc/page.html,并且您的子对话页面位于另一个域中,如:http://def/dialog.html

如果是这种情况,似乎有限制访问dialogArguments和returnValue。例如,查看this previous answer上的评论。