2009-12-23 68 views
1

如果用户未登录,该如何禁用?如果用户未登录,如何禁用MenuItem?

<asp:MenuItem NavigateUrl="~/Customizations.aspx" Text="Customizations" Enabled="<%# Page.User.Identity.IsAuthenticated %>" /> 

即使在Page_Load方法中指定了Page.DataBind(),也不起作用。

<% if (HttpContext.User.Identity.IsAuthenticated) { %> 
    <asp:MenuItem NavigateUrl="~/Customizations.aspx" Text="Customizations" /> 
<% } %> 

给出错误:解析器错误消息:在此上下文中不支持代码块。

我试着添加一个ID属性,它给出了一个错误,说它不是支持的属性。

任何想法?

回答

2

虽然试图做出这样的WinForms web表单,微软短了,并没有忠实地代表了很多的属性中的WinForms MenuItem对象,特别是Visible属性。他们还封锁了班级,阻止通过多态性解决这种疏忽的能力。

这将是辉煌的,以便能够做这样的事情:

<asp:MenuItem NavigateUrl="~/Customizations.aspx" Text="Customizations" Visible="<%# HttpContext.User.Identity.IsAuthenticated %>/> 

你不幸可能将不得不诉诸无论是建筑还是在后台代码修改您的列表。

+0

谢谢,我诉诸修改我的代码后面的列表:( – esac 2009-12-23 18:47:15

0

我会说默认的可能是有问题的用户通过设置Visible =“false”和那些应该是可见的,在代码中设置Visible = true ...没有任何良好的内联支持为此在网络形式。

HTH

+0

如何在代码中设置Visible = true?由于您无法为元素分配ID,因此似乎无法修改它。 – esac 2009-12-23 18:42:19

+0

此外,没有可见财产。 – esac 2009-12-23 18:44:14

+0

你好, 好吧,是的,我的道歉...我以为有,但是这是验证它:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menuitem_properties% 28VS.80%29.aspx 因此,它看起来似乎比我想象的更有限制。您可以使用Menu.FindItem通过值路径查找项目(每个菜单项都有一个值,并且此值可以用作路径)。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.finditem%28VS.80%29.aspx 然后,您可以动态添加项目或添加他们到列表并动态删除。 – 2009-12-24 19:05:51

相关问题