0

我需要通过下面的 JavaScript 代码从 MVC 视图调用 ASPX 页面,还需要传递一些参数作为查询字符串,

function OpenTest() {
    var width = (screen.availWidth - 700).toString();
    var height = (screen.availHeight - 100).toString();
    var param1 = "Test";
    var baseUrl = '@Url.Content("~/Test/Test.aspx?")';
    window.open(baseUrl + "param1=" + param1);
}

在 ASPX 页面中,

if(!string.IsNullOrWhiteSpace(Request.QueryString["param1"]))
        {
            string s1 = Request.QueryString["param1"];
        }

我可以通过上面的代码调用 ASPX 页面并读取参数值,但是当我添加“window.open”的其他属性时,我无法读取查询字符串,问题是我应该将上面代码中的属性放在哪里以便我还可以在 ASPX 页面中读取查询字符串值,

"mywindow", "width=" + width + ",height=" + height + ",toolbar=no,location=no,directories=yes,status=no," +
            "menubar=no,scrollbars=yes,copyhistory=yes,resizable=yes" + ",screenX=0,screenY=0,left=0,top=0"
4

1 回答 1

0

的语法window.open()是:

window.open('url/for/page/here.aspx', 'targetName', 'options');

可以是“ targetName_self”、“_blank”、“_parent”,就像链接的任何目标属性一样,或者有一个标识符来命名窗口,因此您可以在打开同名窗口时重复使用该窗口。

当您window.open()使用任何选项来限制窗口时,就像width=100它假定必须禁用所有其他选项一样,因此您不必放置要禁用的属性。

修复您的选项将是:

window.open(baseUrl + "param1=" + param1,
    "mywindow",
    "width=" + width + ",height=" + height + ",directories=yes,scrollbars=yes,copyhistory=yes,resizable=yes,screenX=0,screenY=0,left=0,top=0");

另一件需要注意的是,所有选项都必须用逗号分隔,不能有空格。一些浏览器会忽略/错误解释带有空格的选项。

另外,不要忘记转义要与 url 一起传递的变量。

于 2012-08-04T04:10:47.083 回答