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");

注意すべきもう 1 つの点は、すべてのオプションをスペースなしでコンマで区切る必要があることです。一部のブラウザーは、スペースを含むオプションを無視または誤解します。

また、URL で渡す変数をエスケープすることを忘れないでください。

于 2012-08-04T04:10:47.083 に答える