嗨,我需要在浏览器中传递的编码URL路径应该如下
https://localhost:44384/part-lookup/all/gmc/1973/p25%2fp2500+van/base/41l-l6
但是浏览器将此URL转换为以下路径,因此我收到404错误
https://localhost:44384/part-lookup/all/gmc/1973/p25/p2500+van/base/41l-l6
我声明的我的路由路径如下
routes.MapRoute(
name: "ShopByCateShopNow",
url: "part-lookup/{category}/{make}/{year}/{models}/{submodel}/{engine}",
defaults: new { controller = "Home", action = "ShopNow" }
);
此处子模型的实际值为'P25 / P2500 VAN',对此值进行编码后,由于无法正确重定向并显示404错误,因此将其转换为'p25%2fp2500 + van'值。
我该如何解决?
答案 0 :(得分:2)
tag
是HTML路径字符。如果要将其视为数据,则必须自己对其进行编码。或创建一个在模型和子模型之间具有另一级的路径,然后在控制器中重新组合它们。
tag
在控制器中组合后,您可以使用%2F
或类似方法调用映射到ShopNow动作的相同方法。
答案 1 :(得分:0)
在您的控制器中,您可以使用Request.Path.ToString()
来获取纯净路径。其中将包含p25%2fp2500+van
,因此您可以使用
var url = Request.Path.ToString();
var model = url.Split('/')[4];
如果您从其他位置访问该索引,或者有时将该站点托管在子文件夹中,则该索引可能不会为4。