我正在构建一个MVC多租户。NET 6应用程序,我需要在其中一个视图中使用Blazor日历组件。我这样称呼它:
@(await Html.RenderComponentAsync<Scheduler>(RenderMode.ServerPrerendered, new {tenantId = Model.TenantId}))
将TenantId传递到其中。
我在剃须刀页面的顶部注入了几个服务:
@inject IAccountService accountService
@inject ITenantService tenantService
然后将它们用于@code{}
中的方法
现在,这是一个常规的MVC应用程序,通常我会使用部分和对控制器的ajax调用来动态加载数据。有了Blazor,我想我可以将服务注入剃刀页面(或代码隐藏(,只需调用MVC服务上的方法,这些方法将从DB返回数据,并且潜在的数据保存也将通过MVC服务进行。
问题是——我应该这么做吗?在我看来,这是最简单的方法,我不必使用AJAX,不需要JS,不需要实现一些新的SQL连接,特别是对于一个Blazor组件,不需要创建HTTPClients等。
还是完全错了,我应该通过API调用从代码后面调用控制器?
通常可以做到,只是不要忘记向程序添加服务。cs:
builder.Services.AddServerSideBlazor();
需要添加端点:
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub();
endpoints.MapControllers();
});