在Blazor 应用中如何定义访问全局变量?

Zhi Lv - MSFT 32,021 信誉分 Microsoft 供应商
2024-03-26T05:27:41.56+00:00

大家好,我在这里问了如何保存变量状态,得到了很长的答案,我想知道在Blazor中是否可以在应用程序结构的某处定义一个变量,以便我可以从任何组件访问它。类似于控制台程序中在主方法中定义变量。非常感谢。

注意: 此问题总结整理于:Blazor accessing global variable issue

Blazor
Blazor
一个免费的开源 Web 框架,使开发人员能够使用 Microsoft 开发的 C# 和 HTML 创建 Web 应用。
15 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,176 信誉分 Microsoft 供应商
    2024-03-27T01:23:34.8366667+00:00

    你好,

    我们可以使用级联值和参数来实现全局变量功能,我们可以在根部(MainLayout组件)定义级联值,这样我们就可以在任何其他子组件中使用它。

    我按照文档的说明编写了以下代码。

    @inherits LayoutComponentBase
     
    <div class="page">
        <div class="sidebar">
            <NavMenu />
        </div>
     
        <main>
            <div class="top-row px-4">
                <a href=https://docs.microsoft.com/aspnet/ target="_blank">About</a>
            </div>
            <CascadingValue Value="@golbalVaule">
                <article class="content px-4">
                    @Body
                </article>
            </CascadingValue>
        </main>
    </div>
     
    @code{
        GolbalValue golbalVaule = new GolbalValue { id = 1, name = "user1" };
    }
    

    这是我的Index 组件:

    @page "/"
     
    <PageTitle>Index</PageTitle>
     
    <h1>Hello, world!</h1>
     
    Welcome to your new app.
     
    <SurveyPrompt Title="How is Blazor working for you?" />
     
    <div>@golbalValue.name</div>
     
    @code{
        [CascadingParameter]
        public GolbalValue? golbalValue { get; set; }
    }
    

    截图如下:

    User's image


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助