如何在 Blazor PWA 启动时创建对象
How can I create an object on startup of a Blazor PWA
我正在开发 Blazor PWA,它可以指导用户完成整个过程并收集数据。我编写了 class MyData 并为其创建了一个对象,其中收集了第一个数据。但实际上我希望在启动时创建对象。这是我到目前为止所拥有的以及有效的方法:
MyApp/Csharp/MyData.cs
namespace MyApp.Csharp
{
public class MyData
{
public decimal Data1 { get; set; } = -99.9m;
}
}
MyApp/Pages/Input.razor
@using MyApp.Csharp
@code{MyData myData = new(); }
<div>
<input type="number" @bind="myData.Data1" />
</div>
如何在启动时创建 myData
?我试图在 Main() 中移动 MyData myData = new();
,但这导致了错误“名称 myData 在当前上下文中不存在”。我还创建了一个文件 App.razor.cs 并将代码放在那里,但同样的错误消息也不起作用。
如果整个 PWA 只需要一个实例,最好的解决方案是静态 class。
public static class MyData
{
public static string MyData1;
}
在我正在构建的 PWA 中,我也对全局数据使用静态 classes。您可以在 Program.cs 中的 Main 方法中设置属性,然后再呈现第一个页面。
如果加载要存储在 class 中的数据需要很长时间,例如调用 Web API,则不应在 Program.cs 中加载它,而应在Index 页面(PWA 的主页面)的 OnAfterRender(当 firstRender 为真时)。理想情况下,您必须显示某种正在加载的通知。
我正在开发 Blazor PWA,它可以指导用户完成整个过程并收集数据。我编写了 class MyData 并为其创建了一个对象,其中收集了第一个数据。但实际上我希望在启动时创建对象。这是我到目前为止所拥有的以及有效的方法:
MyApp/Csharp/MyData.cs
namespace MyApp.Csharp
{
public class MyData
{
public decimal Data1 { get; set; } = -99.9m;
}
}
MyApp/Pages/Input.razor
@using MyApp.Csharp
@code{MyData myData = new(); }
<div>
<input type="number" @bind="myData.Data1" />
</div>
如何在启动时创建 myData
?我试图在 Main() 中移动 MyData myData = new();
,但这导致了错误“名称 myData 在当前上下文中不存在”。我还创建了一个文件 App.razor.cs 并将代码放在那里,但同样的错误消息也不起作用。
如果整个 PWA 只需要一个实例,最好的解决方案是静态 class。
public static class MyData
{
public static string MyData1;
}
在我正在构建的 PWA 中,我也对全局数据使用静态 classes。您可以在 Program.cs 中的 Main 方法中设置属性,然后再呈现第一个页面。
如果加载要存储在 class 中的数据需要很长时间,例如调用 Web API,则不应在 Program.cs 中加载它,而应在Index 页面(PWA 的主页面)的 OnAfterRender(当 firstRender 为真时)。理想情况下,您必须显示某种正在加载的通知。