我是ASP.NET的新手,並且正在努力理解爲什麼我無法獲取MenuItem文本中顯示的當前用戶名。我創建了一個控制拿着菜單放置在所有網頁:如何在MenuItem中添加用戶名(聲明)
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MainMenu.ascx.cs"
Inherits="Test1.Controls.MainMenu" %>
<asp:Menu ID="NavigationMenu" CssClass="menu" runat="server"
EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal"
MaximumDynamicDisplayLevels="4">
<Items>
<asp:MenuItem Text="<%=HttpContext.Current.User.Identity.Name%>" />
</Items>
</asp:Menu>
<div>
User is: "<%=HttpContext.Current.User.Identity.Name%>"
</div>
末的DIV是證明<%= HttpContext.Current.User.Identity.Name%>確實給當前的用戶名(它確實)。但是,它在MenuItem Text屬性中使用時僅返回空白。什麼是正確的方法來做到這一點?
更新:
我看到這是downvoted沒有任何有用的評論。我對此表示贊同,因爲真正的問題還沒有得到真正的答覆:我們如何以聲明的方式來做到這一點?很難弄清楚爲什麼它在DIV中工作,但不是菜單上方的四行。看起來,由於頁面處理的階段不同,可能無法以聲明方式執行此操作?
這些類似的帖子表明它不可能:
How do I make my ASP.NET server control take an embedded code block as a property value?
Why will <%= %> expressions as property values on a server-controls lead to a compile errors?
如果你想知道我爲什麼要做到這一點涉及到另一個問題,我提出:
How to specify path relative to current Master Page File
嗡嗡...似乎MenuItem不從WebControl繼承。我刪除了我的答案 –