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

.NET Core中禁用SmartBreadCrumbs对RouteValues的URL编码方法

解决SmartBreadCrumbs路由斜杠编码问题

要让面包屑生成的URL保留categoryName中的斜杠,避免被编码,可按以下两步操作:

1. 配置支持斜杠的路由规则

首先要确保路由能正确识别带斜杠的categoryName参数,否则即使URL包含斜杠,也会匹配失败。在Shop区域的路由配置中,使用贪婪路由参数({categoryName*})捕获包含斜杠的完整片段:

routes.MapRoute(
    name: "ShopCategory",
    url: "shop/Category/{id}/{categoryName*}",
    defaults: new { controller = "Category", action = "Index", area = "Shop" }
);

该规则会将/Ladies/Shoes这类带斜杠的内容完整识别为categoryName参数,不会把斜杠当作路由分隔符。

2. 手动设置面包屑节点的URL

默认情况下,SmartBreadCrumbs会对RouteValues中的参数值做URL编码,导致斜杠被转为%2F。直接跳过自动路由生成逻辑,手动拼接URL并赋值给面包屑节点的Url属性即可解决:

// 手动拼接目标URL,保留原始斜杠
var targetUrl = $"/shop/Category/{category.Id}/{string.Join("/", categoryNames)}";

// 创建面包屑节点时直接指定Url,替代RouteValues
_node = new MvcBreadcrumbNode("Index", "Category", category.Name, areaName: "Shop") 
{ 
    Parent = _node, 
    Url = targetUrl 
};

这样生成的面包屑链接会直接使用手动拼接的URL,斜杠不会被编码,同时路由也能正确解析该地址。


内容的提问来源于stack exchange,提问作者James Andrew Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:30:51