ASP.NET เรียกใช้ Blazor WebAssembly ด้วยมุมมอง MVC หลัก
สิ่งแวดล้อม
- วิชวลสตูดิโอ
-
- วิชวลสตูดิโอ 2019
- .NET
-
- .สุทธิ 5.0
ทีแรก
เนื่องจาก Blazor WebAssembly เป็นเทคโนโลยีไคลเอนต์จึงไม่สําคัญว่าเว็บเซิร์ฟเวอร์จะทํางานอย่างไร อย่างไรก็ตาม เพื่อที่จะให้บริการ WebAssembly ไปยังไคลเอนต์ อย่างน้อยที่สุด จําเป็นต้องมีการกําหนดค่าฝั่งเซิร์ฟเวอร์ มารันโปรแกรมเซิร์ฟเวอร์เป็น ASP.NET Core MVC ใน Blazor WebAssembly กันเถอะ
การสร้างแอสเซมบลีเว็บ Blazor
ตอนนี้เราแค่ต้องตรวจสอบให้แน่ใจว่า Blazor WebAssembly ใช้งานได้ดังนั้นเราจะปล่อยให้มันเป็นตอนที่เราสร้างโครงการ
ชื่อโครงการหรือชื่อโซลูชันเป็นไปตามอําเภอใจ
หน้าจอ "ASP.NET โฮสต์บน Core" ที่แสดงในหน้าจอข้อมูลเพิ่มเติมสามารถทํางานเป็น MVC ได้ แต่โปรเจ็กต์ที่ได้นั้นอยู่ใกล้กับเซิร์ฟเวอร์ API ดังนั้นเราจะไม่ตรวจสอบที่นี่
การเผยแพร่ Blazor WebAssembly
เผยแพร่ไฟล์เพื่อปรับใช้ Blazor WebAssembly ไปยังโครงการ MVC หลัก ASP.NET
คลิกขวาที่โครงการแล้วเลือก เผยแพร่
เลือก โฟลเดอร์
ปล่อยให้ปลายทางการเผยแพร่เริ่มต้น
หน้าจอเผยแพร่จะปรากฏขึ้น คุณสามารถตั้งค่าต่าง ๆ ได้ แต่สําหรับตอนนี้ปุ่ม "เผยแพร่" จะถูกปล่อยให้เป็นค่าเริ่มต้น
รอให้การเผยแพร่เริ่มต้นและเสร็จสมบูรณ์ โปรดสังเกตว่า เส้นทางโฟลเดอร์ที่ยาวอาจล้มเหลว
คุณสามารถตรวจสอบว่าแฟ้มถูกสร้างขึ้นในโฟลเดอร์ที่ระบุ หากมีการระบุเป็นเส้นทางสัมพัทธ์ ปลายทางจะสัมพันธ์กับโครงการ
สร้างโครงการ MVC หลัก ASP.NET
จากนั้นสร้างโครงการ ASP.NET Core MVC การเปิด Visual Studio แยกกันอาจเป็นเรื่องที่น่าเบื่อดังนั้นให้สร้างมันขึ้นมาภายในโซลูชัน Blazor WebAssembly เนื่องจากทั้งสองโครงการไม่ได้เชื่อมโยงกันในครั้งนี้จึงไม่มีปัญหาแม้ว่าจะถูกสร้างขึ้นแยกกันก็ตาม
ชื่อโครงการเป็นทางเลือก การตั้งค่าอื่นๆ จะเหลืออยู่ตามค่าเริ่มต้น
เนื่องจากฝั่ง Blazor สันนิษฐานว่าการพัฒนาเสร็จสมบูรณ์ ASP.NET โครงการในด้าน MVC หลักเป็นการเริ่มต้น
การสร้างมุมมองสําหรับการประกอบ Blazor
พื้นที่นี้จะเปลี่ยนไปขึ้นอยู่กับโครงการที่คุณกําลังสร้างจริงดังนั้นโปรดแก้ไขตามโครงการนั้น ที่นี่เราจะแก้ไขตามการกําหนดค่าของโครงการตัวอย่าง
โดยทั่วไปควรปรับเปลี่ยนให้คล้ายกับที่สร้างขึ้นเมื่อคุณเผยแพร่ index.html
Blazor Assembly
แก้ไข _Layout.cshtml
ฉันต้องการอ้างอิง CSS ของ Blazor Assembly ดังนั้นฉันสามารถเขียนโดยตรงไปยัง . _Layout.cshtml
เราต้องการให้นําไปใช้กับหน้าเป้าหมายให้มากที่สุดเท่าที่จะเป็นไปได้เพื่อให้เราสามารถขยายได้โดยการเพิ่มเพื่อให้สามารถ RenderSectionAsync
เขียนลิงก์ไปยัง CSS ในแต่ละหน้าได้
<!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>
<!-- 以下同じなので省略 -->
เพิ่มหน้าสําหรับการประกอบ Blazor
เพิ่มหน้าเฉพาะเพื่อแสดงชุดประกอบ Blazor ASP.NET การเพิ่มหน้าและขั้นตอนปกติใน Core MVC จะเหมือนกัน
HomeController
เพิ่มการดําเนินการต่อไปนี้ไปยัง . ฝั่งเซิร์ฟเวอร์ไม่ได้ทําอะไรเป็นพิเศษดังนั้นจึงเพียงแค่ส่งคืนมุมมอง
โฮมคอนโทรลเลอร์.cs
// 省略
namespace AspNetCoreMvc.Controllers
{
public class HomeController : Controller
{
// 省略
// 追加
public IActionResult Blazor()
{
return View();
}
}
}
คลิกขวาที่แอคชันเพื่อเพิ่มมุมมอง
ไม่มีอะไรจะผูกมัดดังนั้นให้เพิ่มตามที่เป็นอยู่
มุมมองจะถูกสร้างขึ้น
การใช้ที่สร้างขึ้นในขณะที่เผยแพร่ของ index.html
Blazor Assembly มีการอ้างอิงเราจะสร้างใหม่ดังนี้
Blazor.cshtml
@{
ViewData["Title"] = "Blazor";
}
@section Styles {
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="BlazorWebAssemblySample.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>
}
เพิ่มลิงก์เพื่อให้คุณสามารถไปยังหน้าใน Blazor ได้
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>
@* 追加 *@
<a asp-action="Blazor">Blazor</a>
เพิ่มการอ้างอิง Microsoft.AspNetCore.Components.แอสเซมบลีเว็บแอสเซมบลี.เซิร์ฟเวอร์
Startup.cs
คุณไม่จําเป็นต้องเขียนโค้ดที่จําเป็นด้วยตัวเอง แต่เพื่อความสะดวกที่คุณได้รับจาก Microsoft.AspNetCore.Components.WebAssembly.Server
NuGet
คลิกขวาที่ การขึ้นต่อกัน แล้วเลือก จัดการแพคเกจ NuGet
เลือกแท็บ การดูแลระบบ และป้อน Microsoft.AspNetCore.Components.WebAssembly.Server ในช่องค้นหา
แพคเกจที่มีชื่อเดียวกันจะปรากฏขึ้นดังนั้นติดตั้ง
ตรวจสอบว่า มีการเพิ่มแพคเกจ
การเปลี่ยนแปลงในการเริ่มต้น.cs
app.UseHttpsRedirection();
แทรกรหัสต่อไปนี้บนบรรทัดต่อไปนี้บรรทัด:
app.UseBlazorFrameworkFiles();
การปรับใช้การประกอบเว็บ Blazor
โดยทั่วไปคุณสามารถใส่โฟลเดอร์ wwwroot Blazor WebAssembly ที่เผยแพร่แล้วตามที่อยู่ในโฟลเดอร์ wwwroot ของ ASP.NEt Coreindex.html
แต่คุณควรลบออกเพราะไม่จําเป็นต้องใช้กต่อไป
นอกจากนี้ตั้งแต่มีการfavicon.ico
ขนานนามตัดสินใจว่าจะใช้ไอคอนใด
เมื่อปล่อยด้วย PWA ถ้าคุณได้ยกเว้นแฟ้ม (เช่น ดัชนี.html) ในโฟลเดอร์ wwwroot
คุณจะต้องเปิดในโปรแกรมแก้ไขข้อความในโฟลเดอร์ wwwroot และลบระเบียนใน service-worker-assets.js
ไฟล์ที่ยกเว้น
มิฉะนั้นคุณอาจได้รับข้อผิดพลาดภายในเมื่อคุณเปิดหน้าจอเว็บ
เมื่อคุณเผยแพร่แอป Blazor คุณไม่จําเป็นต้องดําเนินการนี้ด้วยตนเองโดยไม่รวมไฟล์ที่ไม่จําเป็นออกจากโปรเจ็กต์ของคุณ
ในกรณีของ PWA ข้อผิดพลาดภายในจะเกิดขึ้นหากไม่ได้อยู่ในสภาพแวดล้อม https ไม่สามารถติดตั้งเป็น PWA ได้
การยืนยันการดําเนินการ
ASP.NET ดีบักเรียกใช้โครงการ Core MVC ไปที่หน้า Blazor และตรวจสอบว่าเค้าโครงของ Blazor Assembly ปรากฏในหน้านั้นหรือไม่ เลือกเมนูด้านซ้ายและตรวจสอบว่าแต่ละคุณสมบัติใช้งานได้
เกี่ยวกับ URL
หากคุณคลิกที่เมนูด้านซ้ายของ Blazor Assembly ที่แสดงในหน้าคุณจะสังเกตเห็นว่า URL มีการเปลี่ยนแปลง ลักษณะการทํางานนี้ไม่เป็นไปตามลักษณะการทํางานของ URL ที่คาดไว้ โดย ASP.NET Core MVC ดังนั้นถ้าเป็นไปได้ Blazor Assembly ควรสร้าง URL ในลักษณะที่ URL ไม่เปลี่ยนแปลง
เมื่อคุณเปิดหน้า Blazor
เมื่อคุณคลิกเมนูตัวนับ
บันทึกการเปลี่ยนแปลง
- 2022/7/12
-
- เพิ่มจุดที่ควรทราบเมื่อไม่รวมไฟล์ที่ไม่จําเป็นในการจัดวางไฟล์ของแอป Blazor ที่เผยแพร่
- 2022/3/30
-
- ฉบับพิมพ์ครั้งแรก