C# spa页面刷新上的asp操作url不正确
我在ASP.Net核心网站的特定控制器上提供spa服务。让我们调用控制器C# spa页面刷新上的asp操作url不正确,c#,asp.net-core,single-page-application,C#,Asp.net Core,Single Page Application,我在ASP.Net核心网站的特定控制器上提供spa服务。让我们调用控制器FooController。Index方法返回spa页面。spa页面被包装在原始的\u Layout.cshtml视图中,因为它是网站特定页面的内容。网站的其余部分是ASP.Net核心 在my_Layout.cshtml中,我有一个指向spa页面的链接: <ul class="navbar-nav"> <li class="nav-item"> <a class="nav
FooController
。Index
方法返回spa页面。spa页面被包装在原始的\u Layout.cshtml
视图中,因为它是网站特定页面的内容。网站的其余部分是ASP.Net核心
在my_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>
现在,在“正常”流中,上述功能可以正常工作。my _Layout.cshtml中的asp操作链接始终生成为“/foo”。但是,当我导航到spa内的子页面时,如“/foo/bar”并刷新页面,asp操作链接将变为“/foo%2fbar”,而不是预期的“/foo”
如何确保在my_Layout.cshtml中始终将链接生成为“/foo”?无论spa中请求的子页面是什么?您是否考虑过只放置
?或者使用HtmlHelper
,例如:
?@Dai Url。动作变量的行为与问题相同。我目前正在使用
作为解决方法。
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" });
});
});