c# - ASP :hyperlink navigation

标签 c# asp.net javascript

我正在使用 asp:hyperlink 按钮打开一个条款和条件弹出窗口。 超链接的代码是 -

    <asp:HyperLink ID="HyperLink4" Target="_blank"
        NavigateUrl="javascript:window.open('test.aspx');"
        ForeColor="#F58022" runat="server">Terms and Conditions
    </asp:HyperLink> 

当我在浏览器中单击此 URL 时,它会打开我的 test.aspx 页面。但是随着 test.aspx 它会打开另一个页面:

  • 页面的 URL 是:"javascript:window.open('test.aspx');"
  • 页面主体为:[object]

你能建议我如何删除这个不需要的页面吗?

谢谢

最佳答案

使用:-

<罢工>

<罢工>
<asp:HyperLink ID="HyperLink4" Target="_blank"
  NavigateUrl="javascript:window.open('test.aspx'); return false;"
  ForeColor="#F58022" runat="server">Terms and Conditions</asp:HyperLink>

<罢工>

问题是 window.open 返回一个窗口对象。 javascript:的目的之一“协议(protocol)”是允许 javascript 代码生成 HTML 内容,返回是遵循协议(protocol)的表达式。然后导航到包含该 HTML 的新页面。

在你的情况下,因为你有 Target="_blank"一个新页面被打开并且你的表达式返回的对象(由 window.open 打开的新窗口)调用了它的 toString() 方法,这就是显示在这个额外的窗口。

编辑:

我敲了代码,因为它不起作用。 silky 提供了正确的解决方案.但是我不会删除答案,因为对问题代码中发生的事情的解释是有效的。因此,解决方案实际上是:-

<asp:HyperLink ID="HyperLink4" href="#"
  onclick="window.open('test.aspx'); return false;"
  ForeColor="#F58022" runat="server">Terms and Conditions</asp:HyperLink>

Target不再需要它不被使用。保留为 HyperLink 控件,因为 OP 可能出于其他原因需要它作为页面上的控件。

关于c# - ASP :hyperlink navigation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1392804/

相关文章:

c# - 为什么 IEnumerable<T> 被定义为 IEnumerable<out T>,而不是 IEnumerable<T>

c# - Prism.Autofac.Forms 实现

c# - "better"(更简单,更快,无论如何)版本'distinct by delegate'?

c# - WebAPI 路由中的通配符参数不应该匹配

javascript - href ="javascript:void(0)"与高级禁用链接

javascript - TypeScript 输出与 lambda 函数和普通函数的差异

c# - ASP.NET MVC 3 路由

asp.net - Javascript函数定位正确的元素

asp.net - ASP.NET 站点的负载共享

javascript - 如何使用CSS显示顶部带有箭头的下拉菜单?