Nasazení více Blazor WebAssemblys v ASP.NET Core MVC
životní prostředí
- Vizuální sada
-
- Vizuální sada 2019
- Rozhraní .NET
-
- Rozhraní .NET 5,0
Nejprve
Tyto tipy předpokládají vaše znalosti o "spuštění Blazor WebAssembly v ASP.NET zobrazení Core MVC", takže pokud nevíte, jak spustit Blazor Assembly na ASP.NET Core MVC, přečtěte si tento článek.
Předchozí metoda umožňuje umístit pouze jedno Blazor Assembly, takže tyto tipy umožňují umístit více než jeden.
Vytvoření dvou Blazor assembly
Můžete se ujistit, že dvě Blazor assembly běží v uvedeném pořadí, takže můžete dělat cokoli, co je Blazor Assembly. Prosím, udělejte to tak, abyste prozatím viděli rozdíl. Zde se barva levé nabídky změní pro počáteční stav projektu.
Publikujte každý projekt a připravte soubor.
vytvořit projekt MVC ASP.NET Core
To je také založeno na tipech před vytvořením projektu.
Po vytvoření projektu přidejte "v Microsoft.AspNetCore.Components.WebAssembly.Server
NuGet".
Oprava souboru _Layout.cshtml
To je stejné jako minule.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - AspNetCoreMvc</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
@* 追加 *@
@await RenderSectionAsync("Styles", required: false)
</head>
<body>
<!-- 以下同じなので省略 -->
Přidání stránek pro dvě Blazor Assembly
Tentokrát budeme mít dvě zobrazení, abychom ukázali každé Blazor Assembly.
HomeController
přidejte dvě akce do programu . Opět platí, že strana serveru nedělá nic konkrétního, takže stačí vrátit zobrazení.
HomeController.cs
// 省略
namespace AspNetCoreMvc.Controllers
{
public class HomeController : Controller
{
// 省略
// 追加
public IActionResult Blazor1()
{
return View();
}
public IActionResult Blazor2()
{
return View();
}
}
}
Kliknutím pravým tlačítkem myši na akci přidáte zobrazení. Prosím, jděte na dvě.
Zobrazení je vytvořeno.
Nejprve nastavte první Blazor Assembly.
Blazor1.cshtml
@{
ViewData["Title"] = "Blazor1";
}
@section Styles {
<base href="/Home/Blazor1/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="BlazorWebAssemblySample1.styles.css" rel="stylesheet" />
}
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
@section Scripts {
<script src="_framework/blazor.webassembly.js"></script>
}
Co se liší od předchozího, je to, že obsah základní značky <base href="/" />
je vyroben z . <base href="/Home/Blazor1/" />
Pokud změníte tuto cestu, Blazor Assembly bude moci odkazovat na každý soubor, například dll, jako na kořen této cesty v relativní cestě.
Aktuální specifikace Blazor Assembly ale určuje, že kontroler a akce mají stejnou cestu, protože pokud adresa URL určená akcí MVC neodpovídá relativní cestě od hostitele této základny, Blazor Assembly při načítání selže.
Mimochodem, případ této cesty je ovlivněn, takže pokud je adresa URL automaticky malá, měla by být malá písmena.
Blazor2.cshtml
upravit také. Blazor1.cshtml
Vezměte prosím na vědomí, že se jedná o některé odlišné od .
Blazor2.cshtml
@{
ViewData["Title"] = "Blazor2";
}
@section Styles {
<base href="/Home/Blazor2/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="BlazorWebAssemblySample2.styles.css" rel="stylesheet" />
}
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
@section Scripts {
<script src="_framework/blazor.webassembly.js"></script>
}
Přidejte odkaz, abyste mohli přejít na blazorovu stránku.
index.cshtml
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
@* 追加 *@
<ul>
<li><a asp-action="Blazor1">Blazor1</a></li>
<li><a asp-action="Blazor2">Blazor2</a></li>
</ul>
Spuštění.cs Změny
Blazor WebAssembly se změní cesta trasy, takže ji povolte pro každou cestu.
app.UseBlazorFrameworkFiles("/Home/Blazor1");
app.UseBlazorFrameworkFiles("/Home/Blazor2");
Nasazení Blazor WebAssembly
Minule jsem umístil publikovaný soubor do wwwroot tak, jak byl, ale protože jsem na každé stránce zadal cestu k základní značce, vytvořím složku s podobnou cestou v wwwroot.
Zkopírujte obsah wwwroot publikovaného souboru do každé složky.
Stejně jako index.html
dříve to není nutné.
poprava
Spusťte ji, abyste se ujistili, že blazor WebAssembly na každé stránce funguje správně.