所有Blazor页面的共同财产?

我将需要为每个页面提供一些属性。例如,

private MyClass _myclass;
protected MyClass MyClass => _myclass ??= InitMyClass();

而不是在每个剃刀页面上都放置线条。 Blazor的惯用方式是什么?基类(如何?)或在_Host.cshtml中做一些技巧?

mss0800 回答:所有Blazor页面的共同财产?

MyClass添加为范围服务,并将其注入到您想使用的任何地方。

Startup.cs

service.AddScoped<MyClass>()

现在,您可以使用@inject指令在每个页面中注入相同的实例。

Index.razor

@inject MyClass myClass

https://docs.microsoft.com/en-us/aspnet/core/blazor/dependency-injection

,
  

基类(如何?)

创建基类:

public class MyBase : ComponentBase 
{
    private MyClass _myclass;
    protected virtual MyClass MyClass => _myclass ?? ... ;
}

然后使用@inherits指令扩展基类:

@page "/counter"
@inherits MyBase

<h1>Counter</h1>
...
本文链接:https://www.f2er.com/3162509.html

大家都在问