NavigateUrl ="#"变成href ="SubFolder /#"?

Jam*_*rgy 16 asp.net

这不完全是费马的最后一个定理,但它一直让我感到烦恼,就像大学里的无薪电话账单一样.有时我想创建一个HyperLink不会导致回发的内容,因此我希望目标网址为#.当标记恰好来自子文件夹中的UserControl时,

/
|- Home.aspx (uses UC.ascx)
|- Sub
   |- UC.ascx
Run Code Online (Sandbox Code Playgroud)

用相对路径重写URL,例如

<asp:HyperLink runat="server" NavigateUrl="#" >Click Me!</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

<a href="SubFolder/#">Click Me!</a>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是错误的.显然我可以通过不使用服务器控件来解决这个问题,但它似乎很愚蠢.这可以避免吗?

这里的重点是我将使用jQuery或代码隐藏添加click事件,我从不希望它导致回发,但我希望它是CSS原因的超链接.

Cas*_*jne 11

简单的方法:

 <asp:HyperLink ID="HyperLink1" 
                navigateUrl="#" 
                onclick="javascript:return false;"                   
                runat="server">HyperLink</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

要么

 <asp:HyperLink ID="HyperLink1" 
                href="#" 
                runat="server">HyperLink</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

或者jquery在你不想要回发的链接中添加一个类(nopostback):

$("a.nopostback").bind('click', function () {
     return false;
})
Run Code Online (Sandbox Code Playgroud)

  • #2就是答案......回想起来,它看起来如此明显!谢谢!只是为了记录,`NavigateUrl ="./#"`仍然呈现为`href ="SubFolder /#"` (4认同)

Bru*_*oLM 6

您可以设置服务器端元素的属性.

<asp:HyperLink ID="HyperLink1" runat="server" Text="Click me"
    href="#" style="color: red;" />
Run Code Online (Sandbox Code Playgroud)

在代码隐藏中,使用Attributes属性

HyperLink1.Attributes
Run Code Online (Sandbox Code Playgroud)