0

我正在使用 asp.net mvc 1.0 版,并且我在 url 中的某些参数有问题!

我的网址是这样的(http://localhost:2282/Tags/PostList/c#

 routes.MapRoute(
           "TagsRoute",
           "Tags/PostList/{tag}",
           new { controller="Tags",Action="PostList",tag = "" }
       );

实际上,问题是标签参数没有编码,因此忽略了 simbol #!

我正在使用 actionlink,但可能版本 1.0 不是直接编码参数!

 <%=Html.ActionLink(itemtags.Tags.TagName,
                               "PostList","Tags",
                            new { tag = itemtags.Tags.TagName }, 
                            new { style = "color:red;" })%>

使用此操作链接,只有空格正确编码,事实上 asp.net mvc 变为 asp.net%20mvc 并且工作正常!但是 c# 没有编码:(

所以我尝试使用 Server.UrlEncode,实际上它发生了一些事情!!!

事实上 c# 变成了 c%2523 但它又不正确了,因为 # 的十六进制是 %23!

你有什么解决办法吗???路线限制?

谢谢

4

1 回答 1

0

你在某处得到双重编码。%25 是 % 的符号,所以:

'#' -> %23

“%23”-> %2523

很难确定数据是否已经编码,尤其是当您将实用程序方法放入循环时(因为它们可以调用其他也对数据进行编码的实用程序方法)。我发现的唯一解决方案是为我已经编码过一次的数据使用标记类,而不是在任何地方将我的文本作为相同的数据类型(例如,字符串)传递。

任何对数据进行编码的方法都不会接受字符串并返回字符串。它接受一个字符串并返回一个包含字符串(编码)的对象。

于 2010-05-13T19:10:23.093 回答