使用mvc3.0 在地址栏传参数时若参数中包含尖括号 < > 和百分号 % 时出现404错误,求各位园友帮个忙,谢谢~~
url使用encodeURIComponent编码,下面是编码后的地址 http://localhost:4004/Manage/MyItemList/1/%25%2F0%2F0%2F4%2F0%2F2%2F(这个是%) http://localhost:4004/Manage/MyItemList/1/%3C%20%3E%2F0%2F0%2F4%2F0%2F2%2F(这个是 < > )
Server Error in '/' Application.
--------------------------------------------------------------------------------
HTTP Error 400 - Bad Request.
--------------------------------------------------------------------------------
Version Information: ASP.NET Development Server 10.0.0.0
上面的路径不编码是下面这个样子,我要做的是一个查询功能,需要好多参数,并且地址的全部使用脚本处理。
http://localhost:4004/Manage/MyItemList/1/%3C/0/0/4/0/2/
routes.MapRoute(
"RegisterCheck",
“{controller}/{action}/{page}/{par1}/{par2}/{par3}/{par4}/{par5}/{par6}/{par7}/{par8}/{par9}/{par10}/{par11}",
new
{
controller = "Register",
action = "Check",
page = UrlParameter.Optional,
par1 = UrlParameter.Optional,
par2 = UrlParameter.Optional,
par3 = UrlParameter.Optional,
par4 = UrlParameter.Optional,
par5 = UrlParameter.Optional,
par6 = UrlParameter.Optional,
par7 = UrlParameter.Optional,
par8 = UrlParameter.Optional,
par9 = UrlParameter.Optional,
par10 = UrlParameter.Optional,
par11 = UrlParameter.Optional
},
new { page = @"\d*" }
);
@CryBigSea: 我首先有个问题:
在IE中输入:http://localhost:4004/Manage/MyItemList/1/3C/0/0/4/0/2/ ,能找到路径吗?
在IE中输入:http://localhost:4004/Manage/MyItemList/1/<>3C/0/0/4/0/2/ ,能找到路径吗?
@Launcher:
找不到~~
@CryBigSea: 那不就得了,这还不到特殊字符的问题呢,你的路由映射都还没正确。
我劝你还是把你那一长串的可选路径改为参数形式吧:
http://localhost:4004/Manage/MyItemList?a=1&b=%3c&c=0&d=0&e=2
@Launcher:
路由映射那里不正确的,可不可以帮我指出来一下啊~
这样改的话~我有好几百个页面要改啊~~T_T
非常谢谢你~~
System.Web.HttpUtility.UrlEncode()
读取时System.Web.HttpUtility.UrlDecode()
我想做的是一个查询的功能,地址全部用脚本拼接处理的。。。
@CryBigSea:
哦,是js拼接的啊,那简单,下面的方法进行编码解码即可
function htmlEncode(value) {
if (value) {
return jQuery('<div />').text(value).html();
} else {
return '';
}
}
function htmlDecode(value) {
if (value) {
return $('<div />').html(value).text();
} else {
return '';
}
}