ASP.NET Core 2:如何从区域内页面导航至根目录首页
解决ASP.NET Core 2区域内页面跳转根目录首页的问题
在Razor Pages的区域(Areas)环境下,默认的路由上下文会带上当前区域的前缀,这就是你之前的写法总是指向当前区域根目录的原因。试试下面这两种有效的解决方式:
方法1:使用标签助手明确指定空区域
直接利用asp-area属性强制指定区域为空,这样路由就会忽略当前区域上下文,指向根目录的Index页面:
<form asp-page="Index" asp-area="" method="post"></form>
这是Razor Pages标签助手的标准用法,asp-area=""会覆盖当前页面的区域上下文,确保路由解析到根目录下的/Pages/Index.cshtml。
方法2:通过Url.Page方法生成正确路径
如果你更倾向于使用Url辅助方法,记得在参数中指定area为空:
<form asp-page="@Url.Page("Index", new { area = "" })" method="post"></form>
Url.Page方法会根据你指定的区域参数生成准确的路由路径,避免被当前区域上下文干扰。
为什么之前的写法无效?
你之前尝试的@Url.Content("~/Index")其实本身是正确的根路径,但和asp-page标签助手结合时,标签助手可能会优先基于当前区域上下文重新解析路由,导致路径被覆盖。而直接写asp-page="/Index"时,Razor Pages会尝试在当前区域下查找Index页面(如果存在的话),找不到的话也可能因为路由优先级问题无法正确指向根目录。
另外要确认你的根目录首页确实位于项目根目录的Pages文件夹下(即/Pages/Index.cshtml),且没有给该页面添加[Area]特性,确保它的路由是默认的根路径。
内容的提问来源于stack exchange,提问作者DreamTeK
相关产品推荐
相关产品推荐

