2013-12-17 2 views
-1

Так выглядит меню навигации. Сделано с HTML, CSS и помещено на главную страницу.Меню ASP с разрешениями

Идея теперь состоит в том, чтобы показать/скрыть элементы и подпозиции на основе прав пользователя.

Например, у пользователя есть разрешение только для суб2-2 и суб3-1 ... и т. Д. Поэтому он не должен видеть другие элементы в меню, когда он входит в систему. Выполнены необходимые таблицы и роли, посвященные усвоению. Мне нужно как-то применить их к меню. Можно ли (с помощью ASP.Net, C#)

ITEM1 ITEM2 ITEM3  
      SUB2-1 SUB3-1  
      SUB2-2 SUB3-2 

Глядя на жерех:. Контроль меню, но, кажется, он не имеет свойство для элементов LI «видимого». В основном я ищу что-то вроде объекта/элемента управления/метода, который я могу пропустить, проверить каждый элемент и сделать его видимым или скрытым. Пожалуйста, предложите наилучший подход.

ответ

1

Посмотрите мой код здесь ...

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"> 
        <Items> 
         <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Change My Password"/> 
         <asp:MenuItem NavigateUrl="~/ResetPassword.aspx" Text="Reset My Password"/> 
         <asp:MenuItem Value="AdminOnly" NavigateUrl="~/UpcomingExpirations.aspx" Text="Upcoming Expirations"/> 
        </Items> 
       </asp:Menu> 

В коде позади ...

protected void Page_Load(object sender, EventArgs e) 
     { 
     if (!IsUserAnAdmin(HttpContext.Current.User.Identity.Name)) 
      { 
      MenuItem removeitem = NavigationMenu.GetMenuItemByValue("AdminOnly"); 
      NavigationMenu.Items.Remove(removeitem); 
      } 
     } 

Вместо того, чтобы установить его в Visible = ложь, я просто удалить его, если они «Не администратор.

Редактировать ... Только что понял, что Menu.GetMenuItemByValue() - это метод расширения, который я написал, поэтому у вас его нет! Вот. Это очень полезно.

/// <summary> 
/// Returns the MenuItem in this Menu that has the specified Value (case sensitive) 
/// </summary> 
/// <param name="menu"></param> 
/// <param name="ItemValue"></param> 
/// <returns></returns> 
public static System.Web.UI.WebControls.MenuItem GetMenuItemByValue(this System.Web.UI.WebControls.Menu menu, string ItemValue) 
    { 
    foreach (System.Web.UI.WebControls.MenuItem item in menu.Items) 
     { 
     if (item.Value == ItemValue) 
      { 
      return item; 
      } 
     } 
    return null; 
    } 
+0

Пользователь будет генерировать свой собственный профиль, каждый с различными ролями. Единственное, что известно раньше, это формад. каждой форме или странице присваивается идентификатор. Пользователь может назначить эти идентификаторы формы профилям. Как я могу действовать в этом случае. – Ruby

3

Встроенное меню поддерживает роли пользователей и отображает/скрывает пункты меню в соответствии с ролями.

Если вам нужно более детализированный контроль, вы можете иметь свой собственный динамический сайт поставщика карты, которые потенциально могли бы сделать все, что вы хотите - показать/скрыть элементы на основе ничего, ролей, имена пользователей, расположение и т.д.

Я блог о том, что лет назад.

http://www.wiktorzychla.com/2008/04/sitemapresolve-and-dynamic-site-map.html

+0

Роль будет работать, если мы узнаем имена профилей. правильно? Единственное, что известно раньше, это формад. каждой форме или странице присваивается идентификатор. Пользователь может назначить эти идентификаторы формы профилям. Как я могу действовать в этом случае. Если это неверно, plz направьте lil больше, о том, как действовать. – Ruby

Смежные вопросы