美文网首页OrchardCore
四、Orchard Core入门:自定义模块在管理后台中增加菜单

四、Orchard Core入门:自定义模块在管理后台中增加菜单

作者: 老哥深蓝 | 来源:发表于2019-04-13 16:25 被阅读2次

    自定义模块已经建立好了,我们在Admin后台启用它,并没有什么效果。
    如何为我们的自定义模块增加一个菜单项呢?


    image.png
    1. 我们打开MyModule项目文件,使用NuGet管理器,为该工程增加两个依赖项
      OrchardCore.Navigation、OrchardCoreAdmin。
    2. 在Controllers文件夹增加个AdminTextNavController.cs文件
    using Microsoft.AspNetCore.Mvc;
    using OrchardCore.Admin;
    
    namespace MyModule.Controllers
    {
        [Admin]//使该类具有Admin权限和主题
        public class AdminTextNavController :Controller
        {
            public ActionResult SubMenu1()
            {
                return View();
            }
            public ActionResult SubMenu2()
            {
                return View();
            }
        }
    }
    
    1. 为SubMenu1和SubMenu2创建两个视图


      image.png

      在两个视图输入一些内容以区分:

    //SubMenu1.cshtml
    <p>子菜单1</p>
    
    //SubMenu2.cshtml
    <p>子菜单2</p>
    
    1. 增加菜单项,需要实现INavigationProvider接口,在模块的根目录下创建AdminMenu.cs文件
    using Microsoft.Extensions.Localization;
    using OrchardCore.Navigation;
    using System;
    using System.Threading.Tasks;
    
    namespace MyModule
    {
        public class AdminMenu : INavigationProvider
        {
            public IStringLocalizer T { get; set; }
            public AdminMenu(IStringLocalizer<AdminMenu> localizer)
            {
                T = localizer;
            }
            public Task BuildNavigationAsync(string name, NavigationBuilder builder)
            {
                //该菜单只作用于Admin菜单中
                if (!String.Equals(name, "admin", StringComparison.OrdinalIgnoreCase))
                {
                    return Task.CompletedTask;
                }
                builder.Add(T["MyModules"], "after", rootView => rootView
                      .Add(T["子菜单1"], "1", SubMenu1 => SubMenu1
                        .Action("SubMenu1", "AdminTextNav", new { area = "MyModule" }))
                      .Add(T["子菜单2"], "1", SubMenu2 => SubMenu2
                      .Action("SubMenu2", "AdminTextNav", new { area = "MyModule" })));
                return Task.CompletedTask;
            }
        }
    }
    
    1. 在Startup.cs中使用域模式注册这个菜单
            public override void ConfigureServices(IServiceCollection services)
            {
                services.AddScoped<INavigationProvider, AdminMenu>();
            }
    

    很简单,然后运行Web项目看看效果。


    image.png

    相关文章

      网友评论

        本文标题:四、Orchard Core入门:自定义模块在管理后台中增加菜单

        本文链接:https://www.haomeiwen.com/subject/obqrwqtx.html