我正在设计的页面有一个奇怪的问题。我有这样一个链接:
<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 =“#”(如果不是)(基本上是空白锚标记)。但是现在它将把它们带到一个实际的链接,当然这个链接不存在。
如何让它停止这样做?
答案 0 :(得分: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
重整是预期的行为。
答案 1 :(得分:0)
我知道这是一个老问题,但我也遇到了同样的问题。在我的例子中,锚标记也在ASCX文件(用户控件)中。我发现如果我删除了:
runat="server"
然后问题就解决了。
答案 2 :(得分:0)
我会将href替换为:
<a id="asel1" runat="server" onclick="return false;">
<img id="isel1" runat="server" src="/Images/selbar/1.jpg" />
</a>
答案 3 :(得分:0)
您正在asp c#中动态插入链接,对吗? 你必须在那里寻找href和id。
在asp中,Control.ClientID
值是通过连接控件的ID值和其父控件的UniqueID值生成的。这解释了你的id如何变化。
根据{{3}}生成的ID属性的每个部分由ClientIDSeparator属性值分隔。该值始终返回下划线(_)。
这就是你id="ctl00_ContentMainSection_CardsControl1_asel1"