【问题标题】:DNN Persona Bar module routingDNN Persona Bar 模块路由
【发布时间】:2017-09-13 15:35:26
【问题描述】:

我正在尝试为 dnn9 创建 dnn 角色栏模块, 前端部分向 url 发送请求,例如 - http://dnndev.me/API/personaBar/ControllerName/ActionName 我得到错误 - 无法找到 http://dnndev.me/API/personaBar/ControllerName/ActionName 的控制器 在命名空间中搜索:Dnn.PersonaBar.AdminLogs.Services、Dnn.PersonaBar.ConfigConsole.Services、Dnn.PersonaBar.CssEditor.Services、Dnn.PersonaBar.Extensions.Services、Dnn.PersonaBar.Licensing.Services、Dnn.PersonaBar.Pages。服务,Dnn.PersonaBar.Recyclebin.Services,Dnn.PersonaBar.Roles.Services,Dnn.PersonaBar.Security.Services,Dnn.PersonaBar.Seo.Services,Dnn.PersonaBar.Servers.Services,Dnn.PersonaBar.SiteImportExport.Services, Dnn.PersonaBar.Sites.Services、Dnn.PersonaBar.SiteSettings.Services、Dnn.PersonaBar.SqlConsole.Services、Dnn.PersonaBar.TaskScheduler.Services、Dnn.PersonaBar.Themes.Services、Dnn.PersonaBar.UI.Services、Dnn。 PersonaBar.Users.Services、Dnn.PersonaBar.Vocabularies.Services。

问题是如何将我的命名空间添加到此列表中 注册从 DnnApiController 派生的自定义 api 控制器?

对于 SPA 模块,ServiceRouteMapper 很简单,是否可以用于 DNN 角色栏模块?

【问题讨论】:

    标签: dotnetnuke-9 dotnetnuke


    【解决方案1】:

    对于 PersonaBar 扩展,您的 webapi 服务控制器应继承自 PersonaBarApiController。

    [MenuPermission(MenuName = "Dnn.Users")]
    public class UsersController : PersonaBarApiController
    {
        [HttpPost]
        public HttpResponseMessage CreateUser(CreateUserContract contract)
        {
            ...
        }
    }
    

    您的 dnn 清单应如下所示以作为 PersonaBar 菜单扩展安装:

    <package name="Dnn.PersonaBar.Users" type="PersonaBar" version="01.06.00">
    ...
        <component type="PersonaBarMenu">
              <menu>
                <identifier>Dnn.Users</identifier>
                <moduleName>Users</moduleName>
                <controller>Dnn.PersonaBar.Users.Components.UsersMenuController, Dnn.PersonaBar.Users</controller>
                <resourceKey>nav_Users</resourceKey>
                <path>Users</path>
                <parent>Manage</parent>
                <order>10</order>
                <defaultPermissions>Administrators</defaultPermissions>
              </menu>
        </component>
    ...
    </package>
    

    这导致端点路径:/API/PersonaBar/Users/CreateUser

    完整示例源码here

    【讨论】:

    • 我按照您的建议从 PersonaBarApiController 派生了我的 api 控制器并得到了同样的错误。似乎仅从 PersonaBarApiController 继承是不够的,我应该在 .dnn manifest package type="Module" 中有吗?还是 type="PersonaBar" 就够了?
    • 我更详细地修改了我的答案。
    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多