在按钮单击时重定向新选项卡。(Response.Redirect)在asp.net C#中

时间:2011-06-06 06:56:04

标签: c# asp.net response.redirect targets

我正试图在按钮点击的新标签/窗口中打开一个页面。我在谷歌尝试了这个代码,但它没有用。

有人可以帮我吗?

<asp:Button ID="btn" runat="Server" Text="SUBMIT" 
     OnClick="btnNewEntry_Click" OnClientClick="aspnetForm.target ='_blank';"/>

protected void btnNewEntry_Click(object sender, EventArgs e)
{
    Response.Redirect("CMS_1.aspx");
}

当我使用它时,我收到错误说

   Microsoft JScript runtime error: 'aspnetForm' is undefined.

6 个答案:

答案 0 :(得分:11)

您可以这样做:

<asp:Button ID="Button1" runat="server" Text="Button"
    onclick="Button1_Click" OnClientClick="document.forms[0].target = '_blank';" />

答案 1 :(得分:7)

你不会好转吗?
<asp:HyperLink ID="HyperLink1" runat="server" 
            NavigateUrl="CMS_1.aspx" 
            Target="_blank">
    Click here
</asp:HyperLink>

因为要在asp:Button上复制您想要的行为,您必须在按钮的window.open事件上调用OnClientClick,该事件看起来比上述解决方案更清晰。加asp:HyperLink可以处理这样的情况。

如果您想使用asp:Button复制此内容,请执行此操作。

<asp:Button ID="btn" runat="Server" 
        Text="SUBMIT"
        OnClientClick="javascript:return openRequestedPopup();"/>

JavaScript函数。

var windowObjectReference;

function openRequestedPopup() {
    windowObjectReference = window.open("CMS_1.aspx",
              "DescriptiveWindowName",
              "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes");
}

答案 2 :(得分:4)

我认为你的代码应该只是从这里删除一件事,但它会从现有窗口中的当前页面进行重定向

<asp:Button ID="btn" runat="Server" Text="SUBMIT" 

 OnClick="btnNewEntry_Click"/>    



protected void btnNewEntry_Click(object sender, EventArgs e)
 {
    Response.Redirect("CMS_1.aspx");
 }

如果你想通过客户端脚本来做这件事 用这种方式

<asp:Button ID="BTN" runat="server" Text="Submit" OnClientClick="window.open('Default2.aspx')" />

根据我的说法,您应该更喜欢Client Side Scripting,因为只是打开一个新的窗口服务器端将收回一个帖子,这将是无用的..

答案 3 :(得分:2)

这是我最终使用的。暂时将目标设置为_blank,然后将其设置回来。

OnClientClick="var originalTarget = document.forms[0].target; document.forms[0].target = '_blank'; setTimeout(function () { document.forms[0].target = originalTarget; }, 3000);"

答案 4 :(得分:1)

您必须在标题中添加以下内容:

<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>

然后在加载页面时调用fixform()

答案 5 :(得分:1)

您可以使用Rout重定向。

protected void btnNewEntry_Click(object sender, EventArgs e)
{
    Response.RedirectToRoute("CMS_1"); 
}

需要在Global.asax文件中定义路由逻辑,可能是这样的:

routes.MapPageRoute("CMS_1", "CMS_1", "~/CMS_1.aspx");

CMS_1模式在应用范围内的任何请求都将重定向到CMS_1.aspx,但在网址中显示为www.yoursite.com/CMS_1