【问题标题】:.NET 5 and SPA Routing.NET 5 和 SPA 路由
【发布时间】:2021-07-25 15:11:27
【问题描述】:

我目前正在使用一个 .NET 5 应用程序,该应用程序实现了一个使用 Vue 路由器的 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
 }

谢谢!

【问题讨论】:

    标签: c# routes vue-router vuejs3 .net-5


    【解决方案1】:

    RedirectToRoute() 用于重定向到 ASP.Net 中的已知路由。您只想重定向到一个 URL,这样您就可以改用 Redirect($"/some/Route/on/Spa/{routeVal1}")

    【讨论】:

    • 您应该能够将它们附加到字符串中,例如Redirect($"/some/Route/on/Spa?routeVal1={WebUtility.UrlEncode(routeVal1)}")(您可能需要添加System.Net 命名空间才能使用WebUtility)
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2017-03-28
    • 2014-12-09
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多