繁体   English   中英

所有 Blazor 页面的共同属性?

[英]Common property for all Blazor pages?

我需要为每个页面设置一些属性。 例如,

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

而不是在每个 razor 页面上放置这些行。 Blazor 的惯用方法是什么? 一个基本的 class (如何?)或在_Host.cshtml中做一些技巧?

一个基础 class(如何?)

创建一个基础 class:

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

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

@page "/counter"
@inherits MyBase

<h1>Counter</h1>
...

MyClass添加为范围服务并将其注入到您想要使用的任何位置。

启动.cs

service.AddScoped<MyClass>()

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

索引.razor

@inject MyClass myClass

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM