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