使用Response.Write传递打开新浏览器窗口的JavaScript的问题

时间:2011-07-26 14:55:30

标签: c# asp.net webforms

我有以下代码来响应RadToolBar上的click命令。开关部分工作正常。我遇到问题的地方是使用Response.Write片段打算在新的浏览器窗口中打开label.aspx?id = foo。 label.aspx页面是一个生成和提供PDF的简单页面。我认为我写的代码大多是正确的。但是我一定错过了一些关键部分,因为当我运行应用程序并单击工具栏按钮时没有任何反应。由于交换件工作正常,label.aspx页面也正常工作,问题就出在这一行Response.Write("<script type='text/javascript'>window.open('Label.aspx?ID=" + RadGrid1.SelectedValues["PackageID"].ToString() + "','_blank');</script>");有什么想法吗?

    protected void RadToolBar1_ButtonClick(object sender, RadToolBarEventArgs e)
{
    switch (e.Item.Text)
    {
        case "Print Label":
            Response.Write("<script type='text/javascript'>window.open('Label.aspx?ID=" + RadGrid1.SelectedValues["PackageID"].ToString() + "','_blank');</script>");
            break;
        case "Request Return":
            //do something
            break;
        case "Remove":
            //do something;
            break;
    }

还有其他几个类似的问题。我看了他们所有人,他们似乎推荐了与我上面采用的相同的方法。但是,我的代码仍无效。

1 个答案:

答案 0 :(得分:2)

你必须在字符串中转义一些字符(单引号,双引号)。请试试这个:

Response.Write("<script type=\"text/javascript\">")
Response.Write("window.open(\'Label.aspx?ID=" + RadGrid1.SelectedValues["PackageID"].ToString() + "\',\'_blank\')");
Response.Write("</script>");