如何在 asp.net mvc 的查询字符串值中使用 /

how can use / in querystring value in asp.net mvc

我使用了 ASP.NET MVC5,我有一个 URL 这样的:

localhost:/product/12/nexus5x/quartz

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

但它返回 404 错误,因为 url 中的最后一个参数包含 / 而我没有路由来支持它。 我怎样才能做到这一点? 有时最后一个参数 (productName) 包含 /.

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

您需要 encode URL。 URL 编码涉及转换字符,以便它们可以包含在查询字符串中。字符 / 被编码为 %2F.

所以URL会变成/product/12/nexus5x%2Fquartz

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

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

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

我相信您应该能够使用 catch all 路由。只需 在最后一个标记前添加一个星号 '*'。

这是一个使用路由属性的例子:

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

这里的参数 'name' 应该 捕获过去 'id' 的所有内容,即使其中包含斜杠。