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

ASP.NET Core MVC路由生成查询字符串,如何改为路径参数形式?

解决ASP.NET Core MVC 2.0路由生成路径格式问题

你遇到的问题是默认路由下Tag Helper生成了查询字符串形式的URL,而不是期望的路径段形式,我来给你几个可行的解决方案:

方案一:确保Action参数与路由模板参数名一致

首先检查你的ServicesController里的Information方法,参数名称必须和路由模板里的{id?}对应上,也就是参数名得是id:

public class ServicesController : Controller
{
    public IActionResult Information(string id)
    {
        // 你的业务逻辑
        return View();
    }
}

如果你的Action参数是其他名称(比如gardenType),要么把参数名改成id,要么后续调整路由模板或Tag Helper的参数名(比如用asp-route-gardenType="Gardens")。

方案二:添加优先级更高的具体路由规则

在全局路由配置中,先定义一个针对Services/Information的专属路由,它会比默认路由优先匹配,这样Tag Helper就能生成你想要的路径形式:

app.UseMvc(routes => {
    // 先配置具体路由,优先级高于默认路由
    routes.MapRoute(
        name: "services-info",
        template: "Services/Information/{id}",
        defaults: new { controller = "Services", action = "Information" });

    // 保留原有的默认路由
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

方案三:使用属性路由(更灵活的方式)

如果你不想修改全局路由,可以直接在Action上用属性路由来定义路径模板,这种方式更直观,也不需要调整全局配置:

public class ServicesController : Controller
{
    [Route("Services/Information/{id}")]
    public IActionResult Information(string id)
    {
        // 逻辑代码
        return View();
    }
}

以上三种方法都能让你的Tag Helper生成services/information/gardens格式的URL,优先检查参数名是否匹配,这是最常见的问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:47:57