2017-01-06 6 views
3

Я изучаю Nopcommerce из учебника, предоставленного Pluralsight.Добавить подменю в панели администратора в NopCommerce 3.8

Когда дело доходит до добавления меню для плагина на панели администратора, оно отличается от версий 3.5 и 3.8. Нет public SiteMapNode BuildMenuItem() вместо этого мы должны использовать public void ManageSiteMap(SiteMapNode rootNode).

Я использовал ManageSiteMap в соответствии с документацией, предоставленной NopCommerce How to add a menu item into the administration area from a plugin, но, используя этот код, я смог показать родительское меню, а не подменю.

Это мой код:

public void ManageSiteMap(SiteMapNode rootNode) 
{ 
     var menuItem = new SiteMapNode() 
     { 
      Title = "Promo Slider", 
      ControllerName = "PromoSlider", 
      ActionName = "CreateUpdatePromoSlider", 
      Visible = true, 
      RouteValues = new RouteValueDictionary() { { "area", "admin" } } 
     }; 
     var createUpdate = new SiteMapNode() 
     { 
      SystemName = "Widgets.PromoSlider", 
      Title = "New Sliders", 
      ControllerName = "PromoSlider", 
      ActionName = "CreateUpdatePromoSlider", 
      Visible = true, 
     RouteValues = new RouteValueDictionary() { { "area", null } } 
     }; 

     var manageSlider = new SiteMapNode() 
     { 
      SystemName = "Widgets.PromoSlider", 
      Title = "Manage Sliders", 
      ControllerName = "PromoSlider", 
      ActionName = "ManagePromoSliders", 
      Visible = true, 
      RouteValues = new RouteValueDictionary() { { "area", null} } 
     }; 
     menuItem.ChildNodes.Add(createUpdate); 
     menuItem.ChildNodes.Add(manageSlider); 

     var pluginNode = rootNode.ChildNodes.FirstOrDefault(x => x.SystemName == "Third party plugins"); 
     if (pluginNode != null) 
      pluginNode.ChildNodes.Add(menuItem); 
     else 
      rootNode.ChildNodes.Add(menuItem); 
} 

Но все это показывает, является родительским меню только enter image description here

Я хочу, чтобы показать, как этот

Плагины
        | ---- Игры и Консоли             | -----------> Новый слайдер
            | -----------> Управление ползунки

Может кто-нибудь, пожалуйста, помогите мне с моим кодом.

ответ

3

Ваш код нужно несколько исправлений:

  1. menuItem является родительским узлом, не требуется RouteValues.
  2. В основном, родительский узел должен SystemName

После этого верхние изменения, родительский узел должен выглядеть следующим образом:

var menuItem = new SiteMapNode 
{ 
    Title = "Promo Slider", 
    Visible = true, 
    SystemName = "Widgets.PromoSlider", 
}; 

Хорошо, теперь подходит к дочерним узлам, вы каждый раз создавая новый узел ... вместо добавления в родительский!

var createUpdate = new SiteMapNode() 
var manageSlider = new SiteMapNode() 

Таким образом, изменить его на:

menuItem.ChildNodes.Add(new SiteMapNode 
{ 
    SystemName = "Widgets.PromoSlider", 
    Title = "New Sliders", 
    ControllerName = "PromoSlider", 
    ActionName = "CreateUpdatePromoSlider", 
    Visible = true, 
    RouteValues = new RouteValueDictionary() { { "area", null } } 
}); 

menuItem.ChildNodes.Add(new SiteMapNode 
{ 
    SystemName = "Widgets.PromoSlider", 
    Title = "Manage Sliders", 
    ControllerName = "PromoSlider", 
    ActionName = "ManagePromoSliders", 
    Visible = true, 
    RouteValues = new RouteValueDictionary() { { "area", null } } 
}); 

В конце добавить родительский узел к узлу Plugins:

var pluginNode = rootNode.ChildNodes.FirstOrDefault(x => x.SystemName == "Third party plugins"); 
if (pluginNode != null) 
    pluginNode.ChildNodes.Add(menuItem); 
else 
    rootNode.ChildNodes.Add(menuItem); 

Все сделано! Запустите его, и он будет отображаться по вашему желанию.

enter image description here

+1

Огромное спасибо. Это работает – Avinash

+0

@Div, мой вопрос почти такой же, я хочу добавить это подменю под Promotions, как я могу это сделать ?? – gdmanandamohon

+1

Hi @Div. Это может быть сделано. Проверьте http: // stackoverflow.ком/вопросы/41583629/как-может-я-надстройку а-подменю-в-админ-панель-под-а-существующего меню-в-nopcommerce-3-8/41813251 # 41813251 –

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