Я новичок в 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>
ДИВ в конце концов доказать, что <% = HttpContext.Current.User.Identity.Name%> действительно дает имя текущего пользователя (оно делает). Тем не менее, он просто возвращает пустое значение при использовании в атрибуте TextItem Text. Каков правильный способ сделать это?
UPDATE:
Я вижу, что это было опущено без какого-либо полезного комментария. Я исправил это, поскольку на реальный вопрос на самом деле не ответил: как это сделать декларативно? Трудно понять, почему он работает в 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. Я удалил свой ответ –