【问题标题】:Blazor render specific content based on rolesBlazor 根据角色呈现特定内容
【发布时间】:2022-01-09 13:28:13
【问题描述】:

我有一个表格,我在其中循环浏览我的行项目模型。我想向角色中的用户显示一个删除按钮:Admin。如何在 Blazor 中执行此操作?

我试过了

 <AuthorizeView Roles="Admin">
              <MudButton> ADMIN ONLY BUTTON</MudButton>
 </AuthorizeView>

现在,这一切似乎都运行良好,除了 AuthorizeView 改变了我的上下文。所以我现在失去了对我正在处理的模型的引用,所以现在我想添加一个 OnClick 侦听器以重定向到 device/delete/{@contenxt.DeviceId} 并且 VS 现在抱怨说上下文没有对 DeviceId 的引用

【问题讨论】:

    标签: authorization blazor blazor-webassembly


    【解决方案1】:

    重命名上下文之一以避免冲突:

    <AuthorizedView Roles="Admin" Context="SomeOtherName" >
                  <MudButton> ADMIN ONLY BUTTON</MudButton>
    </AuthorizedView>
    

    【讨论】:

      【解决方案2】:

      这个答案是在做一个假设 - AuthorizedView 是一种类型,你的意思是 AuthorizeView 而不是一些自定义的 AuthorizedView 组件。

      AuthorizeView 将其内容的上下文设置为当前的AuthenticationState。因此 {@contenxt.DeviceId} 不起作用 - AuthenticationState 上没有 DeviceId

      由于您没有为您的问题提供太多“背景” - 为双关语道歉! - 我假设您正在遍历列表并为每条记录显示一个编辑按钮。如果是这样,您可以在 AuthorizeView 之外为您的上下文设置一个局部循环变量,然后在您的按钮调用中引用它。

      类似:

      @{
          var device = context;
      }
       <AuthorizedView Roles="Admin">
                    <MudButton @onclick="() => GotToEdit(device.DeviceId)"> ADMIN ONLY BUTTON</MudButton>
       </AuthorizedView>
      

      【讨论】:

        猜你喜欢
        • 2019-05-15
        • 2020-02-14
        • 2012-09-16
        • 2021-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多