在同一个项目中组合 MVC + Blazor

Combining MVC + Blazor in the same project

我们当前的应用程序现在 运行 在 ASP.NET Core (MVC) 上,我想知道是否会有在同一个项目中使用 MVC 和 Blazor(客户端)的官方方法?

我之所以要这样做,是因为我们无法一次性从 MVC 迁移到 Blazor,因为应用程序太大了。 我正在考虑从 MVC 到 Blazor 的逐步过渡。只是不确定这是否可行?

根据ASP.NET Core 3.0 Preview 2 release notes

目前您不能将 Blazor 直接与 ASP.NET Core MVC 一起使用,但您可以与新引入的 Razor Component 一起使用。 Microsoft 期望在即将推出的 ASP.MET Core.

版本中可以直接将 Blazor 与 ASP.NET Core MVC 一起使用

更多详情:ASP.NET Core updates in .NET Core 3.0 Preview 2

这对于 server-side Blazor 现在绝对可行,Chris Sainty's blog (and the source 对于该博客中的示例)给出了一个具体如何执行此操作的示例。

就我个人而言,我更喜欢将 Blazor 组件放在与 MVC 项目相同的解决方案中的单独项目中。有几个原因:

  • 我发现 Blazor 项目的启动速度比 MVC 快
  • 我只设法使项目的自动重建(基本热重载)在 Blazor 项目中工作,而不是在 MVC 项目中工作
  • 我发现能够隔离 Blazor 组件以确保问题与页面的 MVC 部分无关非常有用。

我倾向于将 Blazor 项目设置为启动项目进行初始调试,然后在准备好将组件集成到 MVC 页面时切换到 MVC 项目。

如果您想尝试这种方法,我对问题 的回答给出了如何将单独的 Blazor 项目添加到包含 MVC 项目的现有解决方案的完整演练,以及如何在 MVC 项目中使用这些 Blazor 组件。

我希望非常相似的方法也适用于 client-side Blazor,但我还没有尝试过。