【发布时间】:2012-01-10 11:04:36
【问题描述】:
我是 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 是为了证明 确实给出了当前用户名(它确实给出了)。但是,在 MenuItem Text 属性中使用时,它只会返回空白。这样做的正确方法是什么?
更新:
我看到这被否决了,没有任何有用的评论。我已经修改了这一点,因为真正的问题还没有真正得到回答:我们如何以声明的方式做到这一点?很难弄清楚为什么它在 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
【问题讨论】:
-
hum... 似乎 MenuItem 没有从 WebControl 继承。我删除了我的答案