我使用的是ASP.NET MVC5,我有这样的URL:
本地主机:/产品/ 12 / nexus5x /石英
product :controller; 12 :id; nexus5x/quartz:name
但它返回了404
错误,因为网址中的最后一个参数包含/
,而我没有路由来支持该错误。
我怎样才能做到这一点?
有时最后一个参数(productName
)包含/
。
第一个解决方案是将/
替换为-
,但对于某些产品,我无法替换它。
答案 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'的所有内容,即使它包含斜杠。