如何在asp.net mvc中的querystring值中使用/in

本文关键字:in querystring 中的 asp net mvc | 更新日期: 2023-09-27 17:59:25

我使用了ASP.NET MVC5,我的URL如下:

localhost:/product/12/nexus5x/石英

product :controller; 12 :id; nexus5x/quartz:name

但它返回了一个404错误,因为url中的最后一个参数包含/,而我没有支持它的路由。我该怎么做?有时最后一个参数(productName)包含/

第一个解决方案是用-替换/,但对于某些产品,我无法替换它。

如何在asp.net mvc中的querystring值中使用/in

您需要对URL进行编码。URL编码包括转换字符,以便将它们包含在查询字符串中。字符/被编码为%2F

因此URL将变为/product/12/nexus5x%2Fquartz

要用JavaScript对值进行编码,可以调用encodeURI方法。

var productName = "nexus5x/quartz";
var encodedProductName = encodeURI(productName);

要在C#中对值进行编码,可以调用Uri.EscapeUriString方法。

我认为您应该能够使用catch-all路由。只需在最后一个标记前面加一个星号"*"即可。

下面是一个使用Route属性的示例:

[Route("product/{id}/{*name}")]

此处的参数"name"应捕获超过"id"的所有内容,即使其中包含斜杠。