ASP.NET Core Admin区域路由异常:SlideController跳转路径错误求助
解决ASP.NET Core Area路由跳转异常问题
1. 确认控制器的Area特性配置
得给SlideController类加上[Area("admin")]特性,并且继承Controller基类,代码示例:
[Area("admin")] public class SlideController : Controller { public IActionResult Index() { return View(); } public IActionResult New() { return View(); } }
2. 检查Program.cs里的路由配置
注册路由时,要把Area的路由规则放在默认路由前面(否则会优先匹配默认路由),代码如下:
// 先配置Area路由规则 app.MapControllerRoute( name: "areas", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}" ); // 再配置非Area的默认路由 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}" );
3. 修正布局页中的菜单链接
布局页里的菜单链接不能直接硬写路径,得用ASP.NET Core的标签助手或Url方法指定Area名称,两种正确写法:
<!-- 使用标签助手生成链接 --> <a asp-area="admin" asp-controller="Slide" asp-action="Index">Slide</a> <a asp-area="admin" asp-controller="Slide" asp-action="New">新建Slide</a> <!-- 或者用Url.Action方法生成链接 --> <a href="@Url.Action("Index", "Slide", new { area = "admin" })">Slide</a>
之前硬编码的/Slide会直接匹配根路由下的控制器,自然不会带上admin Area前缀。
4. 核对视图文件的路径
SlideController对应的视图必须放在正确的Area目录中,路径应为:Areas/admin/Views/Slide/Index.cshtmlAreas/admin/Views/Slide/New.cshtml
路径错误也可能引发路由匹配异常。
内容的提问来源于stack exchange,提问作者ardaoran
相关产品推荐
相关产品推荐

