请教一下,“%3c”是被RUL编码之后的“<”转义符,传其他的转义符都没问题,就是这个鬼东西,一传进action里就直接报错。
VS2010调试的时候报错是:
HTTP 错误 400 - Bad Request。
而SERVER 2003服务器上面报错是:
从客户端(<)中检测到有潜在危险的 Request.Path 值。难道左右尖括号在MVC里都无法在URL传值吗?另外,Action已经设置了[ValidateInput(false)]。麻烦高手解答。
VS2010调试的时候报错是:
HTTP 错误 400 - Bad Request。
而SERVER 2003服务器上面报错是:
从客户端(<)中检测到有潜在危险的 Request.Path 值。难道左右尖括号在MVC里都无法在URL传值吗?另外,Action已经设置了[ValidateInput(false)]。麻烦高手解答。
这个肯定是执行到的,因为传其他的参数都是不会错误的,唯独传 "<"和">" 的转义符就报错了,这难道是MVC的一个BUG?
1、在前台使用escape编码之后再发送
2、在Web.Config里面配置:
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
二选一即可。
"Default", // 路由名称
"{controller}/{action}.html/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);链接请求代码
<%=Html.ActionLink("修改", "protypetadd", "admin", new { ProTypeId = item.Protypeid }, null)%>
谢谢,我的路由里是有参数的,不过这个参数会有<>这类符号,经过转义或编码都无法传入,在.NET 4.0 VS2010中调试一直报错,你可以试一下,应该无法将这类参数用"/" 这类的路径传入,至少我目前测试来说,是无效的。
//原来:
return RedirectToAction("BatchCode?card="+model.TemplateCard); MVC把action的名称(?=等字符)进过编码了
使用
//现在 使用路由参数
return RedirectToAction("BatchCode",new { card="xxx"}
可以