当前位置: 移动技术网 > IT编程>开发语言>.net > abp(net core)+easyui+efcore实现仓储管理系统——菜单-下(十七)

abp(net core)+easyui+efcore实现仓储管理系统——菜单-下(十七)

2019年09月10日  | 移动技术网IT编程  | 我要评论

重庆大学语言文字网,郑海潮开的什么车,she最新演唱会

实现仓储管理系统目录

abp(net core)+easyui+efcore实现仓储管理系统——abp总体介绍(一)

abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二)

abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)

 abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四)

abp(net core)+easyui+efcore实现仓储管理系统——创建应用服务(五)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之控制器(六)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之增删改视图(八)

abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之菜单与测试(九)

abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)

abp(net core)+easyui+efcore实现仓储管理系统——使用 webapi实现curd (十一)

abp(net core)+easyui+efcore实现仓储管理系统——菜单-上 (十六)

 

三、动态加载菜单

       通过 abp(net core)+easyui+efcore实现仓储管理系统——菜单-上 (十六)这篇文章,我们已经了解了abp中的菜单相关的类及类的属性与方法,接下我们通过实例来实现一个动态加载菜单的功能。动态菜单是我们在中添加的功能模块。

     1. 在visual studio 2017的“解决方案资源管理器”中,右键单击“abp.tplms.mvc.web”项目的“startup”文件夹,在弹出菜单中选择“添加” > > “类”。 将类命名为 daynaicaddmenu,然后选择“添加”。如下图。

 

 

      2. 在visual studio 2017的编辑器中打开我们刚才创建的daynaicaddmenu.cs文件,写入如下代码。

 

using abp.application.navigation;
using abp.localization;
using abp.tplms.entitys;
using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;
 

namespace abp.tplms.web.startup
{
    public class dynamicaddmenu
    {
         modules.imoduleappservice _moduleappservice;
        public dynamicaddmenu(modules.imoduleappservice moduleapp)

        { _moduleappservice = moduleapp; }
        public  menuitemdefinition addmenus()
        {
            #region 动态菜单
           var modules= _moduleappservice.getall();
            var project = new menuitemdefinition(
                    "business",
                    l("business"),                  

                    icon: "menu",
                    order: 5
                    );    

            var list = modules.tolist();
            fillmenu(project, 0, list);
            return project;
            #endregion
        }

        // 递归算法
        private  void fillmenu(menuitemdefinition menu, int parentid, list<module> modules)
        {
            list<module> drs = modules.where(x=>x.parentid==parentid).tolist();
            if (drs == null || drs.count <=0)
            {
                return;
            }
            else
            {
                for (int i = 0; i < drs.count; i++)
                {
                    module dr = drs[i];
                    menuitemdefinition nodename = new menuitemdefinition(
                       dr.name,
                       l(dr.displayname),
                       url: dr.url,
                       icon: "business",
                       requiredpermissionname: dr.requiredpermissionname,
                       customdata: i
                   );
                    menu.additem(nodename);
                    fillmenu(nodename, dr.id, modules);
                }
            }
        }

        private static ilocalizablestring l(string name)
        {
            return new localizablestring(name, tplmsconsts.localizationsourcename);

        }
    }
}

 

 

      3. 在visual studio 2017的编辑器中打开“abp.tplms.mvc.web”项目的“startup”文件夹中的tplmsnavigationprovider.cs文件,写入加载菜单的代码。下面代码中的粗体部分。

using abp.application.navigation;
using abp.localization;
using abp.tplms.authorization;
 

namespace abp.tplms.web.startup
{

    /// <summary>
    /// this class defines menus for the application.
    /// </summary>
    public class tplmsnavigationprovider : navigationprovider
    {
        modules.imoduleappservice _moduleappservice;
        public tplmsnavigationprovider(modules.imoduleappservice moduleapp)
        { _moduleappservice = moduleapp; }

        public override void setnavigation(inavigationprovidercontext context)
        {
            var submenu = new dynamicaddmenu(_moduleappservice).addmenus();
            context.manager.mainmenu
                .additem(
                    new menuitemdefinition(
                        pagenames.home,
                        l("homepage"),
                        url: "",
                        icon: "home",
                        requiresauthentication: true
                    )

                ).additem(
                    new menuitemdefinition(
                        pagenames.tenants,
                        l("tenants"),
                        url: "tenants",
                        icon: "business",
                        requiredpermissionname: permissionnames.pages_tenants

                    )

                ).additem(

                    new menuitemdefinition(
                        pagenames.users,
                        l("users"),
                        url: "users",
                        icon: "people",
                        requiredpermissionname: permissionnames.pages_users

                    )

                ).additem(

                    new menuitemdefinition(
                        pagenames.roles,
                        l("roles"),
                        url: "roles",
                        icon: "local_offer",
                        requiredpermissionname: permissionnames.pages_roles

                    )
                )

                .additem(
                    new menuitemdefinition(
                        pagenames.module,
                        l("module"),
                        url: "module",
                        icon: "local_offer"
                    )
                )

                 .additem(
                    new menuitemdefinition(
                        pagenames.supplier,
                        l("supplier"),
                        url: "supplier",
                        icon: "people"
                    )

                )

                 .additem(submenu
                )

                .additem(
                    new menuitemdefinition(
                        pagenames.about,
                        l("about"),
                        url: "about",
                        icon: "info"
                    )

                ).additem( // menu items below is just for demonstration!

                    new menuitemdefinition(
                        "multilevelmenu",
                        l("multilevelmenu"),
                        icon: "menu"
                    ).additem(

                        new menuitemdefinition(
                            "aspnetboilerplate",
                            new fixedlocalizablestring("asp.net boilerplate")

                        ).additem(
                            new menuitemdefinition(
                                "aspnetboilerplatehome",
                                new fixedlocalizablestring("home"),
                                url: "https://aspnetboilerplate.com?ref=abptmpl"
                            )

                        ).additem(
                            new menuitemdefinition(
                                "aspnetboilerplatetemplates",
                                new fixedlocalizablestring("templates"),
                                url: "https://aspnetboilerplate.com/templates?ref=abptmpl"
                            )

                        ).additem(
                            new menuitemdefinition(
                                "aspnetboilerplatesamples",
                                new fixedlocalizablestring("samples"),
                                url: "https://aspnetboilerplate.com/samples?ref=abptmpl"

                            )
                        ).additem(
                            new menuitemdefinition(
                                "aspnetboilerplatedocuments",
                                new fixedlocalizablestring("documents"),
                                url: "https://aspnetboilerplate.com/pages/documents?ref=abptmpl"

                            )
                        )
                    ).additem(
                        new menuitemdefinition(
                           "aspnetzero",
                            new fixedlocalizablestring("asp.net zero")

                        ).additem(
                            new menuitemdefinition(
                                "aspnetzerohome",
                                new fixedlocalizablestring("home"),
                                url: "https://aspnetzero.com?ref=abptmpl"

                            )
                        ).additem(
                            new menuitemdefinition(
                                "aspnetzerodescription",
                                new fixedlocalizablestring("description"),
                                url: "https://aspnetzero.com/?ref=abptmpl#description"

                            )
                        ).additem(
                            new menuitemdefinition(
                                "aspnetzerofeatures",
                                new fixedlocalizablestring("features"),
                                url: "https://aspnetzero.com/?ref=abptmpl#features"

                            )
                        ).additem(

                            new menuitemdefinition(
                                "aspnetzeropricing",
                                new fixedlocalizablestring("pricing"),
                                url: "https://aspnetzero.com/?ref=abptmpl#pricing"

                            )
                        ).additem(
                            new menuitemdefinition(
                                "aspnetzerofaq",
                                new fixedlocalizablestring("faq"),
                                url: "https://aspnetzero.com/faq?ref=abptmpl"
                            )
                        ).additem(
                            new menuitemdefinition(
                                "aspnetzerodocuments",
                                new fixedlocalizablestring("documents"),
                                url: "https://aspnetzero.com/documents?ref=abptmpl"
                            )
                        )
                    )
                );
        }
        private static ilocalizablestring l(string name)
        {
            return new localizablestring(name, tplmsconsts.localizationsourcename);

        }
    }
}

 

    4. 在visual studio 2017的“解决方案资源管理器”中,找到“abp.tplms.application”项目中的“modules”目录,在编辑器中打开 imoduleappservice.cs 接口文件。添加获取全部模块的代码。代码如下。

   list<module> getall();

    5. 在visual studio 2017的“解决方案资源管理器”中,找到“abp.tplms.application”项目中的“modules”目录,在编辑器中打开 moduleappservice.cs 文件。添加获取全部模块的代码。代码如下。  

  public list<module> getall()
        {
            var books = _modulerepository.getalllist();    

            return books;
        }

     6. 前端代码不用作任何修改。在visual studio 2017中按f5运行应用程序。登录之后,效果如下图。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网