Comment créer une application Web modulaire Blazor

asp.net-core blazor c#

Question

J'utilise actuellement ExtCore pour construire une API modulaire et je souhaite également rendre l'application Blazor SPA modulaire.

Je souhaite avoir un projet Blazor de base qui importe les fichiers .cshtml à partir d'autres projets, de manière à ne disposer que d'un projet par section de l'application SPA codant la solution de manière modulaire.

Je ne peux pas utiliser ExtCore car il fallait que le projet soit un noyau .net et Blazor était un standard .net (essayé de le changer en .net core et il a explosé).

Toute orientation grandement appréciée.

https://github.com/aspnet/Blazor

Réponse acceptée

Créez une classLibrary (.Net Standard). Modifiez le csproj en le déchargeant dans Visual Studio. Cela doit ressembler à ceci.

  <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>

Créez une structure de dossier comme ci-dessous.

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 {

}

Construisez MyLibrary.dll en faisant un clic droit sur le projet et en reconstruisant, il y a un bogue en ce moment, ce n'est pas automatiquement compilé avec le projet principal.

Sélectionnez l'application Web principale et ajoutez la bibliothèque MyLibrary aux dépendances.

Dans le fichier _ViewImports.cshtml de l'application Web principale, ajoutez les directives 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

Maintenant son heure d'ajouter le lien à la page

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

Plus d'informations sur Razor: https://blogs.msdn.microsoft.com/webdev/2018/03/01/asp-net-core-2-1-razor-ui-in-class-libraries

Sur Blazor Issue: https://github.com/aspnet/Blazor/issues/340



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow