URLEncode在浏览器MVC中不起作用

时间:2018-07-03 14:56:09

标签: asp.net asp.net-mvc asp.net-mvc-4 url-encoding urldecode

嗨,我需要在浏览器中传递的编码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'值。

我该如何解决?

2 个答案:

答案 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。