[英]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.