在ASP.NET Core Blazor中,路由配置是通过Startup.cs
文件中的Configure
方法和AppRouting
类来完成的。以下是一个简单的示例,展示了如何在Blazor应用程序中配置路由:
- 首先,确保在
Startup.cs
文件中引入了必要的命名空间:
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System.Threading.Tasks;
- 在
Startup.cs
文件中,修改ConfigureServices
方法,以注册Blazor组件和服务:
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddServerSideBlazor(); services.AddScoped(); }
这里我们注册了Razor Pages、Server Side Blazor和一个名为MyService
的服务。
- 修改
Configure
方法,以配置路由和中间件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapBlazorHub(); endpoints.MapFallbackToPage("/_Host"); }); }
这里我们配置了开发环境下的异常处理、HTTPS重定向、静态文件处理、路由和端点。
- 创建一个名为
AppRouting.cs
的新文件,用于定义Blazor应用程序的路由:
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; public class AppRouting { public static void RegisterRoutes(RouteCollection routes) { routes.Add("{page:regex=^_Host$}", new PageRouteHandler("/_Host")); routes.Add("{page:regex=^_Host/index$}", new PageRouteHandler("/_Host/index")); routes.Add("{page:regex=^_Host/{route:regex=.*}$}", new PageRouteHandler("/_Host/{*route}")); } }
在这个类中,我们定义了三个路由,分别对应应用程序的根路径、根路径下的index
页面和根路径下的其他页面。
- 在
Program.cs
文件中,调用AppRouting.RegisterRoutes
方法注册路由:
var builder = WebApplication.CreateBuilder(args); // ... 其他配置 ... builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddScoped(); var app = builder.Build(); // 注册路由 AppRouting.RegisterRoutes(app.Services.GetRequiredService ()); if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapBlazorHub(); endpoints.MapFallbackToPage("/_Host"); }); app.Run();
现在,你已经成功配置了ASP.NET Core Blazor应用程序的路由。你可以根据需要添加更多的路由和组件。