如何創建模塊化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合法嗎? 是的,了解原因