none
地址传参不能包含符号:% RRS feed

  • 问题

  • 最近系统出了点问题,从web界面导出数据到excel为空,仔细检查发现是查询条件的问题。

    数据页面datalist.aspx导出的模式是:通过一个客户端按钮弹出一个新页面,叫load.aspx吧,然后,发送到http流的形式。按钮的事件:
      function OpenUrl() {
                window.open("load.aspx?w=" +document.Form1.txtURL.value);
            }

    这个txtURL是拼接好的查询条件,形如:infotye=1 and TheName like '%650430au%' and flow=1

    在load.aspx页面, string wh = Server.UrlDecode(Request.QueryString["w"].ToString());发现提出的串变成了:infotye=1 and TheName like 'v0430au%' and flow=1

    仔细检查了数据页面的txtURL值为正常,load.aspx地址栏显示正常,就是在Request之后就变了,之前用了Server.UrlEncode方法处理参数,都不行。

    看样子地址传参是不能包含:%是吗,那如果要包含呢?

    2013年4月12日 6:43

答案

  • 谢谢你的方案,也不错,呵呵,我刚百度到一个函数:escape(),试了一下,可以解决问题:

    window.open("load.aspx?w=" +escape(document.Form1.txtURL.value));

    2013年4月12日 7:01
  • 后台不需要Server.UrlDecode解码,直接Request得到即可

    前台之所以要进行编码传递,是因为有些字符有特殊含义,如?是地址url里面用来进行 QueryString作用的,如果不进行编码,会产生歧义


    【孟子E章】


    2013年4月15日 0:56
    版主

全部回复