我想做一个Response.Redirect("MyPage.aspx")
,但在一个新的浏览器窗口中打开它。我以前在没有使用JavaScript注册脚本方法的情况下做到了这一点。我只是想不起来是怎么回事了?
发布于 2008-09-19 19:39:17
我只是找到了答案,并且它起作用了:)
您需要将以下内容添加到服务器端链接/按钮:
OnClientClick="aspnetForm.target ='_blank';"
我的整个按钮代码看起来像这样:
<asp:LinkButton ID="myButton" runat="server" Text="Click Me!"
OnClick="myButton_Click"
OnClientClick="aspnetForm.target ='_blank';"/>
在服务器端OnClick中,我执行了一个Response.Redirect("MyPage.aspx");
,页面将在一个新窗口中打开。
你需要添加的另一个部分是固定表单的目标,否则每个链接都会在一个新窗口中打开。为此,请在弹出窗口的标题中添加以下内容。
<script type="text/javascript">
function fixform() {
if (opener.document.getElementById("aspnetForm").target != "_blank") return;
opener.document.getElementById("aspnetForm").target = "";
opener.document.getElementById("aspnetForm").action = opener.location.href;
}
</script>
和
<body onload="fixform()">
发布于 2011-02-11 02:50:09
您可以将其用作扩展方法
public static class ResponseHelper
{
public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures)
{
if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures))
{
response.Redirect(url);
}
else
{
Page page = (Page)HttpContext.Current.Handler;
if (page == null)
{
throw new InvalidOperationException("Cannot redirect to new window outside Page context.");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures))
{
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
}
}
}
这样,您就可以很好地覆盖实际响应对象
Response.Redirect(redirectURL, "_blank", "menubar=0,scrollbars=1,width=780,height=900,top=10");
发布于 2011-08-16 07:26:38
通过单击事件处理程序构造您的url:
string strUrl = "/some/url/path" + myvar;
然后:
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + strUrl + "','_blank')", true);
https://stackoverflow.com/questions/104601
复制相似问题