我的url编码有什么问题?

在我的asp.net mvc应用程序中,我创建了以下链接:

http://localhost:2689/en/Formula.mvc/351702++LYS+GRONN+5G+9%252f2++fds 

我收到错误400(错误的请求)。

我认为它阻止了%25(正斜杠)。
我究竟做错了什么?

–EDIT 3–
我尝试不编码任何东西,而是依赖于Url.RouteUrl()的默认编码。
似乎由于某种原因,这不会编码“/”。
如果我先自己编码,我最终得到的是双重编码的%252f。 由于某些原因,这给了我一个糟糕的要求..为什么?!

–EDIT 2–
我生成了URI的最后一部分,如下所示:

  1. 拿id.toString
  2. 拿HttpUtility.UrlEncode(名字)
  3. 拿HttpUtility.UrlEncode(代码)
  4. String.Format(“{0} – {1} – {2}”),包含前面部分的值
  5. 将其作为参数添加到Url.RouteUrl()

之后,我的动作再次获取此参数,将其拆分为 – 和HttpUtility.Decode()返回值。

我是这样做的,因为最后两个参数是可选的,但function参数。 如果它们是在上一步中定义的,则必须将它们带到其他页面。
不太抽象:颜色可以有多个名称,但如果用户通过特定名称选择它,则应该将其保留在所有其他页面中。

–EDIT 1–
它看起来像HttpUtility.UrlEncode()和Url.Encode()返回不同的结果:S

如果我不编码“/”,它就像一个分隔符=>那里没有运气。 如果我用Url.Encode()编码它我最终得到%2F => Code 400如果我用HttpUtility.UrlEncode()编码它我最终得到%25 =>代码400

因为400甚至没有让它通过asp.net-mvc,路由调试器是没有用的:(

几天前我在那里。 如果您可以在URL中接受不可读的路由值,请尝试以下操作: URL中的URL编码斜杠

%25实际上编码为“%”,因此%252f编码为“%2f”。

除非您在Web服务器的配置中明确允许,否则不允许在URL中使用%2f (编码为“/”)。

您是否运行了路由调试器: http : //haacked.com/archive/2008/03/13/url-routing-debugger.aspx

我没有太多关注编码 – 但请注意,如果要将其存储在某个地方(或以某种方式采取行动),那么POST会更合适。 如果右边的文本实际上代表id为351702的数据(虚荣url,很像/665354/whats-wrong-with-my-url-encoding ),那么你应该将文本人性化。 就像空间已从上面移除一样。 将其作为简单丢弃的路线中的单独级别也是常见的。

通常,MVCurl应该是可理解的。

W3Schools运行良好: http : //www.w3schools.com/TAGS/html_form_submit.asp? text = hello / world

以下是URL编码参考: http : //www.w3schools.com/TAGS/ref_urlencode.asp

您不能在URL中使用正斜杠作为值。 这是一篇关于创建浏览器和SEO友好URL的好post=> http://www.dominicpettifer.co.uk/displayBlog.aspx?id=34

[编辑]每当您创建路由时,都会将其与URL模式关联(默认模式为{controller} / {action} / {id})。 在这个url模式中,你应该使用正斜杠来分隔不同的标记。 希望有所帮助