我正在使用asp.net mvc 1.0版,我在网址中遇到一些参数问题!
我的网址看起来像这样(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;" })%>
使用此actionlink只有空格正确编码,实际上asp.net mvc成为asp.net%20mvc,它工作正常!但是c#不是编码:(
所以我尝试使用Server.UrlEncode,实际上它发生了一些东西!!!
事实上,c#变成了c%2523,但由于#的十六进制是%23,所以它再次不正确!
你有一些解决方案????路线约束?
由于
答案 0 :(得分:0)
你正在某处获得双重编码。 %25是%的符号,所以:
'#' - &gt; %23
'%23' - &gt; %2523
很难弄清楚数据是否已经编码,特别是一旦将实用程序方法抛入循环(因为它们可以调用其他也编码数据的实用程序方法)。我发现保存我的发际线的唯一解决方案是对我已编码一次的数据使用标记类,而不是将我的文本作为相同的数据类型传递到任何地方(例如,String)。
任何对数据进行编码的方法都不会接受String并返回String。它接受一个String并返回一个包含String(编码)的对象。