URLEncode 在浏览器 MVC 中不起作用
URLEncode not working in browser MVC
你好,我需要在浏览器中传递的编码 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',在对该值进行编码后,它会转换为 'p25%2fp2500+van' 值,因此无法正确重定向并显示 404 错误。
我该如何解决这个问题?
在您的控制器中,您可以使用 Request.Path.ToString()
来获取完整的路径。这将包括 p25%2fp2500+van
,因此您可以使用
var url = Request.Path.ToString();
var model = url.Split('/')[4];
如果您从其他地方访问此网站,或者有时将网站托管在子文件夹中,则索引可能不会为 4。
%2F
是一个 HTML 路径字符。如果您想将其视为数据,则必须自己对其进行编码。或者创建一个在模型和子模型之间有另一个层次的路径,并在控制器中重新组合它们。
routes.MapRoute(
name: "ShopByCateShopNow",
url: "part-lookup/{category}/{make}/{year}/{modelprefix}/{modelsuffix}/{submodel}/{engine}",
defaults: new { controller = "Home", action = "ShopNowPrefixSuffix" }
);
在控制器中组合后,您可以使用 models = $"{modelprefix}/{modelsuffix}"
或类似方法调用映射到您的 ShopNow 操作的相同方法。
你好,我需要在浏览器中传递的编码 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',在对该值进行编码后,它会转换为 'p25%2fp2500+van' 值,因此无法正确重定向并显示 404 错误。
我该如何解决这个问题?
在您的控制器中,您可以使用 Request.Path.ToString()
来获取完整的路径。这将包括 p25%2fp2500+van
,因此您可以使用
var url = Request.Path.ToString();
var model = url.Split('/')[4];
如果您从其他地方访问此网站,或者有时将网站托管在子文件夹中,则索引可能不会为 4。
%2F
是一个 HTML 路径字符。如果您想将其视为数据,则必须自己对其进行编码。或者创建一个在模型和子模型之间有另一个层次的路径,并在控制器中重新组合它们。
routes.MapRoute(
name: "ShopByCateShopNow",
url: "part-lookup/{category}/{make}/{year}/{modelprefix}/{modelsuffix}/{submodel}/{engine}",
defaults: new { controller = "Home", action = "ShopNowPrefixSuffix" }
);
在控制器中组合后,您可以使用 models = $"{modelprefix}/{modelsuffix}"
或类似方法调用映射到您的 ShopNow 操作的相同方法。