代码之家  ›  专栏  ›  技术社区  ›  João Gomes

2sxc-工具栏-按DNN角色编辑权限

  •  1
  • João Gomes  · 技术社区  · 7 年前

    我很难弄清楚权限是如何工作的。

    我需要授予用户在该应用程序/模块的视图/内容上添加或编辑任何数据的严格权限,但他们不能对页面或模块本身拥有编辑权限(只有其中的数据,如FnL允许)。

    基本上,内容工具栏或列表工具栏应该对一些没有安全访问权限的选定DNN用户可见(更像是一个社交团体)。

    自定义工具栏似乎无法呈现。。。 我用过

    <ul class="sc-menu" toolbar='{"contentType":"farm_ad","action":"new"}'></ul>
    

    我可以在页面源代码中看到代码,但按钮本身不是为非管理员呈现的。

    我正在尝试以下代码:

    @Dnn.User.IsInRole("Editores de fármacos")<br>
    @if (@Dnn.User.IsInRole("Editores de fármacos") == true)
        {
        <div class="sc-element">
        <h1>Fármacos adulto</h1>
        @Edit.Toolbar(ListContent)
        </div>
        <br>
        <ul class="sc-menu" toolbar='{"contentType":"farm_ad","action":"new"}'></ul>
        <br>
        }
    

    我可以看到if子句返回true(h1被渲染),但工具栏和按钮根本不显示。。。

    1 回复  |  直到 7 年前
        1
  •  1
  •   iJungleBoy    7 年前

    因此,首先,我建议只使用一个工具栏api,以保持简单。当您使用Razor时,我建议您使用它,因为当您使用错误的语法时,也会出错。所以最好使用 @Edit.Toolbar(...)

    如果工具栏没有出现,总有几个问题要问:

    1. @Edit.Toolbar() 没有参数,只需要一个最小的工具栏,它提供应用程序/管理按钮,但没有编辑。
    2. 渲染工具栏时是否出现JS错误?这并不常见,但如果出现问题,可能会发生这种情况。检查F12以查看是否出现了什么。
    3. 只是因为CSS而不可见?有时你会有一个工具栏,但你看不到它,因为它上面有东西。

    根据核心问题的不同,您将有不同的解决方案。

    1. 如果它不在那里,您的服务器代码不知何故是错误的,并且 if
    2. 如果是JS错误,则应检查正在使用的值
    3. 如果它没有被替换,那么您的标记要么是错误的,要么页面没有加载执行此操作所需的js。只有当用户对模块拥有编辑权限时,才会加载ATM。
    4. 如果它在那里但没有出现,要么创建一个非悬停解决方案,要么调整CSS使其工作。