Asp.net mvc 在NopCommerce 3.8的管理面板中添加子菜单
我正在学习Pluralsight提供的教程 在管理面板中为插件添加菜单时,它与3.5版和3.8版不同。没有Asp.net mvc 在NopCommerce 3.8的管理面板中添加子菜单,asp.net-mvc,nopcommerce,nopcommerce-3.80,Asp.net Mvc,Nopcommerce,Nopcommerce 3.80,我正在学习Pluralsight提供的教程 在管理面板中为插件添加菜单时,它与3.5版和3.8版不同。没有公共SiteMapNode BuildMenuItem() 相反,我们必须使用public void ManageSiteMap(SiteMapNode rootNode) 根据NopCommerce提供的文档,我使用了ManageSiteMap,但通过使用该代码,我只能显示父菜单,而不能显示子菜单 这是我的代码: public void ManageSiteMap(SiteMapNode
公共SiteMapNode BuildMenuItem()
相反,我们必须使用public void ManageSiteMap(SiteMapNode rootNode)
根据NopCommerce提供的文档,我使用了ManageSiteMap,但通过使用该代码,我只能显示父菜单,而不能显示子菜单
这是我的代码:
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);
}
但它显示的只是父菜单
我想表现得像这样
插件|---->促销滑块
|-----------> 新滑块
|-----------> 管理滑块
任何人都可以帮我修改代码。您的代码需要一些修复:
menuItem
是父节点,不需要routeValue
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 } }
});
最后,将父节点添加到插件节点:
var pluginNode = rootNode.ChildNodes.FirstOrDefault(x => x.SystemName == "Third party plugins");
if (pluginNode != null)
pluginNode.ChildNodes.Add(menuItem);
else
rootNode.ChildNodes.Add(menuItem);
全部完成!运行它,它将显示为您想要的
非常感谢您。信息技术Works@Div,我的问题几乎是一样的,我想在“促销”下添加此子菜单,我如何才能做到?Hi@Div。这是可以做到的。请查收