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

时间:2016-07-31 11:10:19

标签: c# asp.net-mvc asp.net-mvc-4 url-routing

我使用的是ASP.NET MVC5,我有这样的URL:

  

本地主机:/产品/ 12 / nexus5x /石英

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

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

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

2 个答案:

答案 0 :(得分:1)

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

因此,网址将变为/product/12/nexus5x%2Fquartz

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

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

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

答案 1 :(得分:1)

我相信你应该能够使用捕获所有路线。只需将星号前缀'*'添加到最后一个标记。

以下是使用Route属性的示例:

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

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