2009-12-23 55 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

相關問題