Spa页面刷新上错误的asp-action网址

时间:2019-08-21 11:48:27

标签: c# asp.net-core single-page-application

我正在从ASP.Net核心网站中的特定控制器提供水疗服务。我们将其称为控制器FooControllerIndex方法返回spa页面。 spa页面被包装在原始_Layout.cshtml视图内,因为它是网站特定页面的内容。该网站的其余部分是ASP.Net核心。

在_Layout.cshtml中,我有一个指向spa页面的链接:

<ul class="navbar-nav">
    <li class="nav-item">
        <a class="nav-link" asp-controller="Foo" asp-action="Index">Foo</a>
    </li>
</ul>

Startup.cs的相关部分如下所示:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

app.MapWhen(context => context.Request.Path.StartsWithSegments("/foo"), builder =>
{
    builder.UseMvc(routes =>
    {
        routes.MapSpaFallbackRoute(
            name: "foo-spa-fallback",
            defaults: new { controller = "Foo", action = "Index" });
    });
});

现在,以上在“正常”流程中正常工作。我的_Layout.cshtml中的asp-action链接始终生成为“ / foo”。但是,当我导航到spa内部的子页面时,说出'/ foo / bar'并刷新该页面,则asp-action链接将变为'/ foo%2fbar',而不是预期的'/ foo '。

如何确保_Layout.cshtml中的链接始终以“ / foo”生成?水疗中心内要求的子页面是什么?

0 个答案:

没有答案