所有Blazor页面的共同财产?

时间:2019-11-05 03:16:32

标签: c# asp.net asp.net-core blazor blazor-server-side

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

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

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

2 个答案:

答案 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>
...