.NET 5 和 SPA 路由
.NET 5 and SPA Routing
我目前正在使用 .NET 5 应用程序,该应用程序实现了使用 Vue Router 的 Vue JS 前端。我目前正在使用 SpaStaticFilesExtension 并尝试重新路由到客户端上的页面,但是由于 .NET API 不包含我尝试重新路由到的路由,我遇到了错误。
下面是我的Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "/";
});
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseSpaStaticFiles();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
app.UseSpa(spa =>
{
spa.Options.SourcePath = env.IsDevelopment() ? "/" : "/dist";
if (env.IsDevelopment()) spa.UseVueCli();
});
}
下面是我尝试路由到客户端路由。需要注意的是,我在属性路由的控制器中调用此重定向。此外,这个控制器路由在 Vue 路由器上不存在。
return RedirectToRoute("/some/Route/on/Spa", new routeVales{ routeVal1 = routeVal1 });
下面是我要匹配的客户端代码:
{
path: "/some/Route/on/Spa",
name: "Name",
component: SomeComponent
}
谢谢!
RedirectToRoute()
用于重定向到 ASP.Net 内的已知路由。您只想重定向到 URL,这样您就可以使用 Redirect($"/some/Route/on/Spa/{routeVal1}")
。
我目前正在使用 .NET 5 应用程序,该应用程序实现了使用 Vue Router 的 Vue JS 前端。我目前正在使用 SpaStaticFilesExtension 并尝试重新路由到客户端上的页面,但是由于 .NET API 不包含我尝试重新路由到的路由,我遇到了错误。
下面是我的Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "/";
});
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseSpaStaticFiles();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
app.UseSpa(spa =>
{
spa.Options.SourcePath = env.IsDevelopment() ? "/" : "/dist";
if (env.IsDevelopment()) spa.UseVueCli();
});
}
下面是我尝试路由到客户端路由。需要注意的是,我在属性路由的控制器中调用此重定向。此外,这个控制器路由在 Vue 路由器上不存在。
return RedirectToRoute("/some/Route/on/Spa", new routeVales{ routeVal1 = routeVal1 });
下面是我要匹配的客户端代码:
{
path: "/some/Route/on/Spa",
name: "Name",
component: SomeComponent
}
谢谢!
RedirectToRoute()
用于重定向到 ASP.Net 内的已知路由。您只想重定向到 URL,这样您就可以使用 Redirect($"/some/Route/on/Spa/{routeVal1}")
。