求救啊,ASP.NET MVC传递参数发生错误。

cnGrasp 2010-11-01 07:48:14
请教一下,“%3c”是被RUL编码之后的“<”转义符,传其他的转义符都没问题,就是这个鬼东西,一传进action里就直接报错。
VS2010调试的时候报错是:
HTTP 错误 400 - Bad Request。

而SERVER 2003服务器上面报错是:
从客户端(<)中检测到有潜在危险的 Request.Path 值。

难道左右尖括号在MVC里都无法在URL传值吗?另外,Action已经设置了[ValidateInput(false)]。

麻烦高手解答。
...全文
2337 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sofast2010 2011-11-01
  • 打赏
  • 举报
回复
<httpRuntime requestPathInvalidCharacters="" />就ok
shenopkss 2011-07-15
  • 打赏
  • 举报
回复
哥们,我也遇到了一个问题,同事的解决方案是:
//原来:
return RedirectToAction("BatchCode?card="+model.TemplateCard); MVC把action的名称(?=等字符)进过编码了
使用
//现在 使用路由参数
return RedirectToAction("BatchCode",new { card="xxx"}
可以
cnGrasp 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fengyarongaa 的回复:]

在网站路由器里面去 需要 新增一个 路由

路由代码
C# code

routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}.html/{id}", // 带有参数的 URL
new { controller = "Home"……
[/Quote]

谢谢,我的路由里是有参数的,不过这个参数会有<>这类符号,经过转义或编码都无法传入,在.NET 4.0 VS2010中调试一直报错,你可以试一下,应该无法将这类参数用"/" 这类的路径传入,至少我目前测试来说,是无效的。
ycproc 2010-11-25
  • 打赏
  • 举报
回复
在网站路由器里面去 需要 新增一个 路由

路由代码

routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}.html/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);



链接请求代码
<%=Html.ActionLink("修改", "protypetadd", "admin", new { ProTypeId = item.Protypeid }, null)%>


cnGrasp 2010-11-25
  • 打赏
  • 举报
回复
无用的,路径里面看来不能有特殊字符。否则会被视为一个无效的连接,只能使用?id= 这样的方式来咯。
AsheBin 2010-11-05
  • 打赏
  • 举报
回复
两种解决办法:
1、在前台使用escape编码之后再发送
2、在Web.Config里面配置:
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
二选一即可。
phil999 2010-11-04
  • 打赏
  • 举报
回复
[ValidateInput(false)]

把这个用到 controller 上试试,太晚了,没测试
cnGrasp 2010-11-04
  • 打赏
  • 举报
回复
继续顶上去啊。急救。
cnGrasp 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jianshao810 的回复:]
400 应该是请求错误吧。。你确定已经执行到action里?
[/Quote]

这个肯定是执行到的,因为传其他的参数都是不会错误的,唯独传 "<"和">" 的转义符就报错了,这难道是MVC的一个BUG?
cnGrasp 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_lover 的回复:]
<写成&amp;lt;即可不报错。接到后进行解码。Server.HtmlDecode(Server.HtmlDecode("&amp;lt;"))即可
[/Quote]
感谢各位的回答,孟子的说发我还没测试,但是我想请问一下 “&” 如果出现在URL里面,那不就是会做为参数的分割符了吗?
孟子E章 2010-11-01
  • 打赏
  • 举报
回复
<写成&lt;即可不报错。接到后进行解码。Server.HtmlDecode(Server.HtmlDecode("&lt;"))即可
jianshao810 2010-11-01
  • 打赏
  • 举报
回复
400 应该是请求错误吧。。你确定已经执行到action里?
cnGrasp 2010-11-01
  • 打赏
  • 举报
回复
坛子里面没有用MVC的高人么?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧