ASP.NET带有runat="server"的锚标签表现奇怪

3

我在设计的页面上遇到了一个奇怪的问题。我有一个链接,像这样:

<a id="asel1" runat="server" href="#"><img id="isel1" runat="server" src="/Images/selbar/1.jpg" /></a>

当我查看生成页面的源代码时,我得到了这个:

<a href="../Cards/#" id="ctl00_ContentMainSection_CardsControl1_asel1"><img src="/Images/selbar/1.jpg" id="ctl00_ContentMainSection_CardsControl1_isel1" /></a>

我的目标是在适用于该页面的情况下以编程方式插入链接,并在不适用的情况下留下href="#"(基本上是空的锚点)。然而现在它会带他们去一个实际的链接,当然这个链接不存在。
我该如何停止这样做?

设置href="#"无效吗?如果是空的锚标签,则不会呈现href标签... - Sunny
可能是 https://dev59.com/53E85IYBdhLWcg3w03Dz 的重复问题。 - Roman
4个回答

2
你是如何插入链接的?我刚刚尝试了以下方法:
<a id="asel1" runat="server" href="#">
    <img id="isel1" runat="server" src="/Images/selbar/1.jpg" />
</a>

如果在代码后端什么也不做,链接会呈现为:
<a href="#" id="ctl00_MainContent_asel1">
    <img src="/Images/selbar/1.jpg" id="ctl00_MainContent_isel1" />
</a>

如果在 Page_Load 中定义 href:

protected void Page_Load(object sender, EventArgs e)
{
    asel1.HRef = "../Cards";
}

它将呈现为:

<a href="../Cards" id="ctl00_MainContent_asel1">
    <img src="/Images/selbar/1.jpg" id="ctl00_MainContent_isel1" />
</a> 

其他情况下,id混淆是预期的行为。


我忘了提到链接在用户控件内部,这可能会影响它的行为。即使我没有后台代码,只是将其保留为href="#",它仍然想将其更改为href="../Cards/#"。 - Don Quixote

0

我知道这是一个老问题,但我也遇到了完全相同的问题。在我的情况下,锚点标签也在 ASCX 文件(用户控件)中。我发现如果我删除:

runat="server"

然后问题被解决了。


0

我会将 href 替换为以下内容:

<a id="asel1" runat="server" onclick="return false;">
   <img id="isel1" runat="server" src="/Images/selbar/1.jpg" />
</a>

0
你是在 asp c# 中动态插入链接,对吗? 你需要查找 href 和 id。
在 asp 中,Control.ClientID 的值是通过连接控件的 ID 值和其父控件的 UniqueID 值生成的。这就解释了为什么你的 id 会改变。 根据 this,生成的 ID 属性的每个部分都由 ClientIDSeparator 属性值分隔。该值始终返回下划线 (_)。
这就是为什么你有 id="ctl00_ContentMainSection_CardsControl1_asel1"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接