【发布时间】:2013-01-25 17:39:14
【问题描述】:
我有以下代码:
protected void gv_inbox_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "sign")
{
Session["TransYear"] = int.Parse(((HiddenField)gv_inbox.Rows[index].Cells[1].FindControl("HDN_TransYear")).Value);
Session["MailNumber"] = int.Parse(((HiddenField)gv_inbox.Rows[index].Cells[1].FindControl("HDN_MailNumber")).Value);
Response.Redirect("Signature.aspx", false);
//Response.Write("<script>");
//Response.Write("window.open('Signature.aspx','_blank')");
//Response.Write("</script>");
}
}
我想在新标签页或窗口中打开页面。注释代码会这样做,但是当refresh 原始页面导致错误时。如何在我的gridview 的行命令事件中以正确的方式在新窗口或选项卡中打开Signature.aspx。
【问题讨论】:
-
如果您想在新标签页中打开某些内容,那么
Response.Redirect()可能不是最佳选择。这将重定向当前浏览器选项卡中的当前响应。在新选项卡中打开内容的最简单方法是完全避免使用服务器端代码,只需制作一个带有target或_blank的链接。或者如果它需要是一个按钮,JavaScript 也可以在新选项卡中打开一些东西。看起来您正在尝试在引导用户之前设置一些值,但我想链接可以只包含查询字符串中的这些值,Signature.aspx页面可以从那里使用它们。 -
@David 有正确的路要走。特别是因为会话变量在部署到网络场时会增加复杂性。
-
确实,我什至没有想到这一点。 (我已经有一段时间没有对我的 Web 应用程序痴迷于 RESTful 了,所以我有一段时间不必过多考虑 Web 农场了。)作为一般规则,请求本身应该携带所需的输入资源来生成响应。
-
hmmm,但我想在打开新窗口之前设置会话!
标签: c# javascript jquery asp.net gridview