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="server"。
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>
サーバータグをソースコードに流し込んでいます!
なぜこの動作が見られるのですか?どうすればそれを回避できますか?
私はここで多くの同様のスレッドを調べましたが、グーグルにはほとんど何もなかったので、これを作成しました。これは重複した質問ではないと思います。