ASP.NET Core Razor Page锚标记在区域内不起作用

时间:2018-11-15 22:44:15

标签: c# asp.net-core razor-pages

在ASP.NET Core项目的通常位置,我有一组剃须刀页面。

/Pages/Index.cshtml
/Pages/About.cshtml
...etc...

他们使用通常的共享布局文件为每个页面提供页眉和页脚内容...

/Pages/Shared/_Layout.cshtml

在_Layout.cshtml中,我在页面的页眉和页脚部分有定位标记,可以返回到索引页面,就像这样...

<a asp-page="\About">About</a>

...将生成实际的href为“ http://localhost/About”。这是正确的,并且工作正常。从那以后,我在一个区域内添加了更多剃刀页面,像这样...

/Areas/Account/Pages/Settings/UserSettings.cshtml

我希望“帐户”区域页面的页眉和页脚显示与主页相同,因此我已设置了视图开始文件...

/Areas/Account/_ViewStart.cshtml

...使用现有的布局,像这样...

@{
    Layout = "/Pages/Shared/_Layout.cshtml";
}

...而且可以肯定的是,我的UserSettings页面现在可以按预期呈现该页面的页眉和页脚。带有适当的图像和文字。

除了一个问题。锚标记无法为“帐户”区域内的任何剃刀页面生成正确的href。而不是生成...

href="http://localhost/About" 

...正在生成...

href="http://localhost/Account/Settings/UserSettings" 

我相信它会为UserSettings页面生成默认的href。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我发现您需要更改

<a asp-page="\About">About</a>

<a asp-page="/About">About</a>

\是 转义符,/是分隔符。如果使用asp-page="\About",将无法正确定向区域。