我正在从ASP.Net核心网站中的特定控制器提供水疗服务。我们将其称为控制器FooController
。 Index
方法返回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”生成?水疗中心内要求的子页面是什么?