【问题标题】:ASP.NET anchor tag with runat="server" acting weird带有 runat="server" 的 ASP.NET 锚标记行为怪异
【发布时间】:2010-04-26 20:45:12
【问题描述】:

我正在设计的页面有一个奇怪的问题。我有一个这样的链接:

<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="#"(基本上是空白锚标记)。但是现在它会将他们带到一个实际的链接,这当然不存在。

我怎样才能让它停止这样做?

【问题讨论】:

标签: asp.net html


【解决方案1】:

你是如何插入链接的?我刚刚尝试了以下方法:

<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/#"。
【解决方案2】:

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

runat="server"

然后问题就解决了。

【讨论】:

    【解决方案3】:

    我会替换 href 如下:

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

    【讨论】:

      【解决方案4】:

      您是在asp c# 中动态插入链接,对吧? 你必须在那里寻找href和id。

      在 asp 中,Control.ClientID 值是通过连接控件的 ID 值和其父控件的 UniqueID 值生成的。这就解释了你的 id 是如何变化的。 根据this 生成的ID 属性的每一部分由ClientIDSeparator 属性值分隔。该值始终返回下划线 (_)。

      这就是为什么你有id="ctl00_ContentMainSection_CardsControl1_asel1"

      【讨论】:

        猜你喜欢
        • 2010-12-27
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多