我将需要为每个页面提供一些属性。例如,
private MyClass _myclass;
protected MyClass MyClass => _myclass ??= InitMyClass();
而不是在每个剃刀页面上都放置线条。 Blazor的惯用方式是什么?基类(如何?)或在_Host.cshtml
中做一些技巧?
答案 0 :(得分:1)
将MyClass
添加为范围服务,并将其注入到您想使用的任何地方。
Startup.cs
service.AddScoped<MyClass>()
现在,您可以使用@inject
指令在每个页面中注入相同的实例。
Index.razor
@inject MyClass myClass
https://docs.microsoft.com/en-us/aspnet/core/blazor/dependency-injection
答案 1 :(得分:1)
基类(如何?)
创建基类:
public class MyBase : ComponentBase
{
private MyClass _myclass;
protected virtual MyClass MyClass => _myclass ?? ... ;
}
然后使用@inherits
指令扩展基类:
@page "/counter"
@inherits MyBase
<h1>Counter</h1>
...