请教一下,“%3c”是被RUL编码之后的“<”转义符,传其他的转义符都没问题,就是这个鬼东西,一传进action里就直接报错。
VS2010调试的时候报错是:
HTTP 错误 400 - Bad Request。
 
而SERVER 2003服务器上面报错是:
从客户端(<)中检测到有潜在危险的 Request.Path 值。难道左右尖括号在MVC里都无法在URL传值吗?另外,Action已经设置了[ValidateInput(false)]。麻烦高手解答。

解决方案 »

  1.   

    坛子里面没有用MVC的高人么?
      

  2.   

    400 应该是请求错误吧。。你确定已经执行到action里?
      

  3.   

    <写成&amp;lt;即可不报错。接到后进行解码。Server.HtmlDecode(Server.HtmlDecode("&amp;lt;"))即可
      

  4.   

    感谢各位的回答,孟子的说发我还没测试,但是我想请问一下 “&” 如果出现在URL里面,那不就是会做为参数的分割符了吗? 
      

  5.   


    这个肯定是执行到的,因为传其他的参数都是不会错误的,唯独传 "<"和">" 的转义符就报错了,这难道是MVC的一个BUG?
      

  6.   

    [ValidateInput(false)]把这个用到 controller 上试试,太晚了,没测试
      

  7.   

    两种解决办法:
    1、在前台使用escape编码之后再发送
    2、在Web.Config里面配置:
       <system.web>
        <httpRuntime requestValidationMode="2.0" />
       </system.web>
    二选一即可。
      

  8.   

    在网站路由器里面去 需要 新增一个 路由 路由代码 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)%>
      

  9.   


    谢谢,我的路由里是有参数的,不过这个参数会有<>这类符号,经过转义或编码都无法传入,在.NET 4.0 VS2010中调试一直报错,你可以试一下,应该无法将这类参数用"/" 这类的路径传入,至少我目前测试来说,是无效的。
      

  10.   

    哥们,我也遇到了一个问题,同事的解决方案是:
    //原来:
    return RedirectToAction("BatchCode?card="+model.TemplateCard); MVC把action的名称(?=等字符)进过编码了
    使用
    //现在 使用路由参数
    return RedirectToAction("BatchCode",new { card="xxx"}
    可以
      

  11.   

    <httpRuntime requestPathInvalidCharacters="" />就ok