You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中如何通过asp-controller、asp-action访问URL多层路径

解决方案

你遇到的斜杠被编码的问题,本质是asp-controller属性仅用于填写控制器名(不含Controller后缀),不支持传入路径片段,框架会把该属性的全部内容当作普通字符串做URL编码,所以/会被转成%2F。

场景1:Food控制器放在Controllers/Products子目录下

给Food控制器类添加路由特性指定前缀即可:

using Microsoft.AspNetCore.Mvc;

// 加路由特性指定访问前缀
[Route("Products/Food")]
public class FoodController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

对应的标签助手写法就可以简化为:

<li class="nav-item">
     <a class="nav-link text-dark" asp-area="" asp-controller="Food" asp-action="Index">Food</a>
</li>

生成的URL就是你需要的/Products/Food/Index。

场景2:Products是你定义的Area(区域)

直接通过asp-area属性指定区域名即可,不用给控制器加额外特性:

<li class="nav-item">
     <a class="nav-link text-dark" asp-area="Products" asp-controller="Food" asp-action="Index">Food</a>
</li>

临时快速解决

如果你不想改控制器配置,也可以直接用href属性写死路径,不需要用asp-controller相关属性:

<li class="nav-item">
     <a class="nav-link text-dark" href="/Products/Food/Index">Food</a>
</li>

内容的提问来源于stack exchange,提问作者KaasGierInFrankrijk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:06:03