blazor - Blazor 组件有没有办法读取其容器页面类属性?
问题描述
我知道,有CascadedParameter
s,但它们需要CascadingValue
s 才能工作。
好的,之前对问题的描述很模糊。所以这里更简单。
想象一个 Blazor 页面:
@page "/"
@attribute [Authorize, NavMenu(1, "My first page", "view_module", HeaderText = "Hello!")]
<MyCommonPageHeader/>
为什么是NavMenu
属性?我编造的,它是一些元数据,允许我生成一个导航菜单,其中包含指向每个配置页面的链接。
我的目标是设计MyCommonPageHeader
组件,读取自定义属性 ( NavMenuAttribute
) 并使用它在页面上显示标题。
我已经这样做了:
@page "/"
@attribute [Authorize, NavMenu(1, "My first page", "view_module", HeaderText = "Hello!")]
<MyCommonPageHeader Page="this"/>
我只需要传递this
给我的每个组件实例。我只是想确保这里没有快捷方式,组件没有其他方法可以访问包含的页面类。
顺便说一句,这里是NavMenuAttribute
来源,如果你好奇的话:
using Microsoft.AspNetCore.Components;
using System;
using System.Reflection;
namespace Woof.Blazor {
public class NavMenuAttribute : Attribute {
public string DisplayName { get; set; }
public string HeaderText { get; set; }
public int Order { get; set; }
public string Icon { get; set; }
public bool IsEnabled { get; set; } = true;
public NavMenuAttribute(int order, string displayName, string icon) {
Order = order;
DisplayName = displayName;
Icon = icon;
}
}
}
只是元数据。没有其他的。我在属性行中描述页面,现在我的应用程序中的所有其他内容都使用此描述,因此我不必重复任何内容。
解决方案
推荐阅读
- swift - 未找到 ProjectName-Swift.h / 生成的 Xcode 10
- javascript - 如果我通过 Javascript 从文档头中删除 Javascript 脚本会发生什么?
- javascript - 急需帮助:Ajax.beginform 调用两次,第二次调用之前的值
- applescript - Applescript 检查用户输入的第一个字母
- sql - ISNULL 没有帮助数据在此查询中显示为空字符串
- javascript - R:networkD3添加缩放功能
- swift - 如何用数据填充表格视图单元格?
- azure - 为什么 sendgrid 营销部门会未经授权
- angular - 如果复选框选中角度 6,则启用文本框
- python - Keras 训练卡在 LSTM 中