Blazor组件是否可以读取其容器页面类属性?

时间:2020-04-30 07:58:39

标签: blazor blazor-server-side

我知道,有CascadedParameter个,但是它们需要CascadingValue个才能工作。

好的,以前对该问题的描述不明确。所以这里更简单。

想象一个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;
        }

    }

}

仅元数据。没有其他的。我在属性行中描述页面,现在我的应用程序中的所有其他内容都使用此描述,因此我不必重复任何事情。

0 个答案:

没有答案