http://localhost:2689/en/Formula.mvc/351702++LYS+GRONN+5G+9%252f2++fds
我收到了400错误(错误请求)。
我认为它在%25(正斜杠)处被阻止。
我做错了什么?
--编辑3--
我尝试不编码任何内容,而是依赖于Url.RouteUrl()的默认编码。
似乎这不会对“/”进行编码。
如果我自己先编码它,我最终得到双重编码的%252f。出于某种原因,这会给我带来一个错误请求。
为什么?!
--编辑2--
我生成URI的最后一部分如下:
- 取id.toString
- 取HttpUtility.UrlEncode(name)
- 取HttpUtility.UrlEncode(code)
- 使用来自上一部分的值进行String.Format(“{0}--{1}--{2}”)
- 将其作为参数添加到Url.RouteUrl()
之后,我的操作再次获取此参数,在“--”处拆分它并HttpUtility.Decode()将值返回。
我这样做是因为最后两个参数是可选的,但是功能参数。如果它们在前面的步骤中定义了,它们必须随着其他页面一起传递。
更少的抽象:颜色可以有多个名称,但是如果用户通过特定名称选择了它,则应在所有其他页面中保留它。
--编辑1--
它看起来HttpUtility.UrlEncode()和Url.Encode()返回不同的结果:S
如果我不对“/”进行编码,它会作为分隔符=>没有帮助。 如果我使用Url.Encode()对其进行编码,我最终得到%2F =>代码400 如果我使用HttpUtility.UrlEncode()对其进行编码,我最终得到%25 =>代码400
因为400甚至不让它通过asp.net-mvc,所以路由调试程序没有用:(