4

我正在尝试在单击按钮时在新选项卡/窗口中打开一个页面。我尝试在谷歌中得到此代码,但它不起作用。

有人可以帮我吗?

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

6 回答 6

11

你可以这样做:

<asp:Button ID="Button1" runat="server" Text="Button"
    onclick="Button1_Click" OnClientClick="document.forms[0].target = '_blank';" />
于 2014-07-22T11:05:28.313 回答
8

你会不会更好

<asp:HyperLink ID="HyperLink1" runat="server" 
            NavigateUrl="CMS_1.aspx" 
            Target="_blank">
    Click here
</asp:HyperLink>

因为,要在 上复制您想要的行为asp:Button,您必须调用按钮window.openOnClientClick事件,该事件看起来比上述解决方案要干净得多。另外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");
}
于 2011-06-06T07:08:19.030 回答
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')" />

根据我的说法,您应该更喜欢客户端脚本,因为仅打开一个新窗口服务器端就会回帖,那将毫无用处..

于 2011-06-06T08:23:51.037 回答
2

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

OnClientClick="var originalTarget = document.forms[0].target; document.forms[0].target = '_blank'; setTimeout(function () { document.forms[0].target = originalTarget; }, 3000);"
于 2013-08-28T21:31:13.753 回答
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()加载您的页面。

于 2012-04-26T06:40:15.740 回答
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,但在 URL 中显示为 www.yoursite.com/CMS_1

于 2012-09-28T23:42:16.087 回答