在Blazor中创建公共字符串/公共变量? [英] Creating a Public String / Public Variable in Blazor?

查看:13
本文介绍了在Blazor中创建公共字符串/公共变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我尝试从数据库中获取一个名称,然后在页面上选择的任何位置使用公共字符串@namea回显该名称。

我已经找到了一种做这件事的方法,但它太老套了,显然不是做这件事的方法。

所以这是我的代码...

@code{
public string namea = "";
 
 public string cryptoName()
 {
    var test = db.Get("Names");
    namea = db.name;
    return db.name;
 }
}

和调用它的HTML

<li class="breadcrumb-item active" aria-current="page">
    <small>@namea</small>
</li>

我确实认为在@code块中,您可以只执行以下操作:

db.Get("Names");
var namea = db.name;
然后在HTML...中重用namea但是,将此代码添加到@code中,而不是包装在加密名称()中,只会返回this error

请注意;我知道这是非常基本的,但我只是在寻找最佳实践。谢谢。

推荐答案

存储名称的类:

public class SomeConfig
{
    public string Name { get; private set; }

    public event Func<Task> Notify;

    public void SetName(string name)
    {
        Name = name;
        Notify?.Invoke();
    }
}

将类作为服务注入Program.cs

builder.Services.AddSingleton<SomeConfig>();

在某些组件中,表示MainLayout更新名称。

@code {
    [Inject]
    private SomeConfig Config { get; set; }

    protected override async Task OnInitializedAsync()
    {
        await Task.Delay(200); // Simulates an Async database call
        Config.SetName("Brian");
    }
}
然后,在任何组件中,您只需注入相同的服务并使用名称。我创建了一个组件只是为了显示名称。

NameView.razor

@implements IDisposable
@Config.Name
@code {
    [Inject]
    private SomeConfig Config { get; set; }

    protected override void OnInitialized() => Config.Notify += OnNotify;

    private Task OnNotify() => InvokeAsync(StateHasChanged);

    public void Dispose() => Config.Notify -= OnNotify;
}

用法:

 <small><NameView /></small>

这篇关于在Blazor中创建公共字符串/公共变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆