在Blazor中创建公共字符串/公共变量? [英] Creating a Public String / Public Variable in Blazor?
本文介绍了在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屋!
查看全文