添加 runat="server" 不会呈现我的服务器标签 <%...%>
我有一个带有几个 <li> 菜单的母版页,因为我必须为当前页面设置 class=selected,所以我使用一个小的服务器标签来查找 url 并分配特定的类。
我总共有 10 个 <li> 并且并非所有类型的用户都可以使用所有菜单,如果用户不是管理员,我需要切换几个 <li>,所以我已经添加了 runat="server" 所以我可以通过c#设置它们的visible=false
一目了然:
<li runat="server" id="liBlog" class='<%= Request.Url.AbsoluteUri.EndsWith("/Blog") ? "selected" : "" %>'><a href="/Blog">Group Blog</a></li>
<li runat="server" id="liPoll" class='<%= Request.Url.AbsoluteUri.EndsWith("/Poll") ? "selected" : "" %>'><a href="/Poll">Poll</a></li>
<li id="liInvite" class='<%= Request.Url.AbsoluteUri.EndsWith("/Invite") ? "selected" : "" %>'><a href="/Invite">Invite</a></li>
<li id="liFavourite" class='<%= Request.Url.AbsoluteUri.Contains("/Favourite") ? "selected" : "" %>'><a href="/Favourite">My Favourites</a></li>
没有 runat="server" 的 <li> 工作正常,当源代码在正确的页面上显示 class="selected" 或 class="" 时,另一个 <li> 也可以正常工作,直到我决定添加runat="服务器"。
一旦我添加了 runat="server",整个 class="" 块就被发送到 html 页面,它根本不处理服务器标签!我右键单击 html 并查看源代码,它被呈现为:
<li id="ctl00_ctl00_ContentPlaceHolder1_liBlog" class="<%= Request.Url.AbsoluteUri.EndsWith("/Blog") ? "selected" : "" %>"><a href="/Blog">Group Blog</a></li>
它正在将我的服务器标签倒入源代码中!
为什么会出现这种行为?我怎样才能避免它?
我在这里查了很多类似的线程,谷歌几乎没有,所以做了这个,我不认为这是一个重复的问题。