Как поставить имя пользователя в MenuItem (декларативно) - PullRequest
0 голосов
/ 01 декабря 2011

Я новичок в 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 принимать встроенный блок кода в качестве значения свойства?
Почему выражения <% =%> в качестве значений свойств серверных элементов управления приводят к ошибкам компиляции?

Если вы хотите знать, почему я хочу это сделать, это касается другого вопроса, который я задал:
Как указать путь относительно текущего файла мастер-страницы

1 Ответ

0 голосов
/ 01 декабря 2011

То, что вы используете, не работает для MenuItem, как выяснил Стив Б. Я до сих пор выясняю, почему это ..

Самый простой способ - сделать это с помощью кода.

        string username = "Not Logged In";

        if (!string.IsNullOrEmpty(HttpContext.Current.User.Identity.Name))
        {
            username = HttpContext.Current.User.Identity.Name;
        }

        NavigationMenu.Items.Add(new MenuItem(username));
...