如何创建模块化Blazor Web App

asp.net-core blazor c#

我目前正在使用ExtCore构建模块化API,我也希望将Blazor SPA应用程序模块化。

我想拥有一个核心Blazor项目,该项目从其他项目中导入.cshtml文件,这样我就可以在SPA应用程序的每个部分中以模块化方式编写解决方案。

我不能使用ExtCore,因为它要求项目是.net核心,而Blazor是.net标准(尝试将其更改为.net核心并且它已经爆炸)。

任何指导都非常感谢。

https://github.com/aspnet/Blazor

一般承认的答案

创建ClassLibrary(.Net标准版)。通过在Visual Studio中卸载csproj来修改它。它必须与此类似。

  <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <BlazorLinkOnBuild>False</BlazorLinkOnBuild>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RunCommand>dotnet</RunCommand>
    <RunArguments>blazor serve</RunArguments>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.0-preview2-30230" PrivateAssets="all" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Browser" Version="0.1.0" PrivateAssets="all" />
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="0.1.0" />
    <DotNetCliToolReference Include="Microsoft.AspNetCore.Blazor.Cli" Version="0.1.0" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="Pages\**\*.cshtml" />
  </ItemGroup>

创建一个文件夹结构如下。

Pages
 |-----> _ViewImports.cshtml 
 | 
 |-----> Shared.cshtml

_ViewImports.cshtml

@using System.Net.Http
@using Microsoft.AspNetCore.Blazor
@using Microsoft.AspNetCore.Blazor.Components
@using Microsoft.AspNetCore.Blazor.Layouts
@using Microsoft.AspNetCore.Blazor.Routing
@using MyLibrary

Shared.cshtml

@page "/shared"
<h1>This is a shared page</h1>
@functions {

}

通过右键单击项目构建MyLibrary.dll并重建,此时有一个错误,这不是自动编译的主项目。

选择主Web应用程序并将MyLibrary添加到依赖项。

在主Web应用程序的_ViewImports.cshtml中添加using指令。

@addTagHelper *, MyLibrary

@using System.Net.Http
@using Microsoft.AspNetCore.Blazor
@using Microsoft.AspNetCore.Blazor.Components
@using Microsoft.AspNetCore.Blazor.Layouts
@using Microsoft.AspNetCore.Blazor.Routing
@using WebApplication7
@using WebApplication7.Shared
@using MyLibrary.Pages

现在是时候添加链接到页面了

<NavLink href="/shared">
    <span class='glyphicon glyphicon-education'></span> Shared Page
</NavLink>

更多信息关于Razor: https//blogs.msdn.microsoft.com/webdev/2018/03/01/asp-net-core-2-1-razor-ui-in-class-libraries/

关于Blazor问题: https//github.com/aspnet/Blazor/issues/340




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因