我正试图在按钮点击的新标签/窗口中打开一个页面。我在谷歌尝试了这个代码,但它没有用。
有人可以帮我吗?
<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.
答案 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