如何在ASP.net runat ='server'标记中使用传统的HTML id属性?

7 css asp.net

我在网站上重构一些CSS.我一直在努力,并注意到代码中缺少传统的HTML ID.

有大量使用CssClass='…',或者有时只是class='…',但我似乎找不到说id ='...'的方法,也没有让它被服务器换掉.

这是一个例子:

<span id='position_title' runat='server'>Manager</span>
Run Code Online (Sandbox Code Playgroud)

当响应从服务器返回时,我得到:

<span id='$aspnet$crap$here$position_title'>Manager</span>
Run Code Online (Sandbox Code Playgroud)

这里有什么帮助?

rp.*_*rp. 6

使用jQuery选择元素:

$("span[id$='position_title']")....
Run Code Online (Sandbox Code Playgroud)

jQuery的灵活选择器,特别是它的'开头'/'以选择器结束'('end with'选择器如上所示,为ASP.NET的dom id munge提供了一个很好的方法.

RP


Dav*_*ult 5

放在id前面的'crap'与控件的容器有关,除了不把它放在任何容器中之外,我无法(据我所知)阻止这种行为.

如果需要在脚本中引用id,可以使用控件的ClientID,如下所示:

<script type="text/javascript">
    var theSpan = document.getElementById('<%= position_title.ClientID %>');
</script>
Run Code Online (Sandbox Code Playgroud)


Mat*_*wdy 0

.Net 总是会用一些损坏的(稍微可预测的,但仍然不要指望它)值替换你的 id 值。你真的需要有那个 id runat=server 吗?如果你不输入 runat=server,那么它不会破坏它......

添加:就像 leddt 所说,您可以使用 ClientID 引用 span(或任何带有 id 的 runat=server),但我认为这在 CSS 中不起作用。

但我认为如果你的 CSS 使用基于 ID 的选择器,你会遇到更大的问题。您不能重复使用 ID。同一页面上不能有多个具有相同 ID 的项目。.Net 会抱怨这一点。

那么,考虑到这一点,您重构 CSS 的工作范围是否会变得更大一些?