Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# spa页面刷新上的asp操作url不正确_C#_Asp.net Core_Single Page Application - Fatal编程技术网

C# spa页面刷新上的asp操作url不正确

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

我在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-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" });
    });
});