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

我试图在按钮单击的新选项卡/窗口中打开一个页面。我试图在谷歌得到这个代码,但它无法正常工作。

任何人都可以帮我吗?

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

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

  Microsoft JScript runtime error: 'aspnetForm' is undefined. 

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

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

如果你想通过客户端脚本执行此操作使用这种方式

  

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

你可以这样做:

  

你不是更好吗?

  Click here  

因为,为了在asp:Button上复制你想要的行为,你必须在按钮的OnClientClick事件上调用window.open ,它看起来比上面的解决方案要简洁得多。 加上asp:HyperLink可以处理这样的场景。

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

  

JavaScript函数。

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

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

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

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

  

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

您可以使用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