创建从ASP.NET网页的新标签或窗口(Create a new tab or window for

2019-09-28 08:32发布

我有,我想成为一个排序调度中心对我的web应用程序的用户的主页。 所以,我想主要页面的停留开放,但是当用户选择某些任务,我可以将它设置,使一个新的标签或页面与他们所选的任务创建。

我知道如何控制转移到另一个页面,但我怎么可以这样做一个Server.Transfer的唯一做出新的页面出现在新的标签,并保持现有的页面打开旧标签/窗口?

为了让我在做什么的例子。 目前,我有我的主要页面上的中继器构建了LinkBut​​ton的列表。 该了LinkBut​​ton有从数据源文本。 一旦链接用户点击按钮,我想打开一个新的网页,我想会话状态与此新页面被保留。

可以这样做,以及如何?

我在.NET 3.5使用ASP.NET版本。

编辑:我不在乎是否其选项卡或窗口。 我只是希望能够生成一个新的网页,并保持现有的开放。

Answer 1:

您不能更改用户界面行为服务器端(例如,通过使用Server.Transfer的或Response.Redirect的) - 它只是不这样的。 因此,有两种方法可以去这个问题:

  1. 如果你提前知道的时间,这具体任务需要打开一个新窗口/选项卡中,适当地设置锚点或窗体标记的目标(或使用JavaScript的window.open()函数)。
  2. 如果打开一个新窗口/标签的决策需要进行服务器端,可以生成并返回的javascript,做你所需要的。

请记住,新的标签/窗口行为是完全依赖于浏览器和用户的设置,所以没有办法保证,这将发生 - 某些设置甚至可以强制在同一个窗口中打开的所有链接,无论目标或调用window.open()。

如果您使用的是基于cookie的会话,这是默认的功能,即使是在新窗口或标签,用户仍将使用同一个会话,所以你不应该做任何特殊保存会话状态。

如果您使用的是基于URL(或无cookie)会话密钥,你需要确保你使用JavaScript打开新窗口时适当地使用密钥格式的URL。 我还不能肯定,但我相信仅仅是使用target属性和相对url应自动生成相应的URL。



Answer 2:

这是我做的。

我需要根据他们做出什么选择添加一个会话状态变量,在Firefox,它会导致一个新的标签,这是很好:

在调度页面,我只是用Server.Transfer的去到新页面(后加入会话状态),但是,新的页面上,我运行一个onload脚本。 这里是我的代码:

在项目命令事件处理程序调度页面:

protected void RecentButtonsRepeater_ItemCommand(object source,
    RepeaterCommandEventArgs e)
{
    string code = ((LinkButton)e.Item.Controls[1]).Text;
    string sql = "SELECT RunID FROM ProductionRuns WHERE RunCode = @code";
    SqlConnection sqlconn = new SqlConnection(QCDataPath);
    sqlconn.Open();
    SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);
    sqlcomm.Parameters.AddWithValue("@code", code);
    SqlDataReader sdr = sqlcomm.ExecuteReader();

    sdr.Read();

    int id = sdr.GetInt32(0);

    sdr.Close();
    sqlconn.Close();

    Session["RunID"] = id;
    Server.Transfer("Sheet.aspx");
}

而在Sheet.aspx标记:

<script type="text/javascript">
    function ReOpenScoreHome() {
        window.open("Scoresheets.aspx", "reopenwindow");
    }
</script>
</head>
<body onload="ReOpenScoreHome()">


Answer 3:

我几乎可以肯定这是不可能的。 大多数标签浏览器有一个你可以调整,告诉它应该推出新的网页浏览器的设置 - 在一个全新的窗口或新选项卡。

鉴于这是用户的控制,我不认为这是目前一种方式来获得这个在浏览器无关的方式发生下。 虽然我也不会感到惊讶,如果通过IE浏览器的DOM扩展暴露了对象模型允许你这样做。



Answer 4:

它不是possibe,羯羊新页面的标签页中打开,或一个新的页面由用户设置浏览器控制,而不是从代码。



文章来源: Create a new tab or window for a web page from ASP.NET