Я новичок в ASP.NET и пытаюсь понять, почему я не могу отобразить текущее имя пользователя в тексте элемента 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%> действительно дает текущее имя пользователя (да). Тем не менее, он просто возвращает пустое значение при использовании в атрибуте Text MenuItem. Как правильно это сделать?
UPDATE:
Я вижу, это было отклонено без каких-либо полезных комментариев. Я исправил это, поскольку на настоящий вопрос так и не был дан ответ: как мы можем сделать это декларативно? Трудно понять, почему это работает в DIV, но не четыре строки выше в меню. Казалось бы, из-за разных этапов обработки страницы может быть невозможно сделать это декларативно?
Эти похожие посты говорят о том, что это невозможно:
Как заставить мой серверный элемент управления ASP.NET принимать встроенный блок кода в качестве значения свойства?
Почему выражения <% =%> в качестве значений свойств серверных элементов управления приводят к ошибкам компиляции?
Если вы хотите знать, почему я хочу это сделать, это касается другого вопроса, который я задал:
Как указать путь относительно текущего файла мастер-страницы