Blazor 根据角色呈现特定内容

Blazor render specific content based on roles

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

我试过了

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

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

重命名其中一个上下文以避免冲突:

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

这个答案是假设 - 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>