簡體   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