EnableUrlRewriting="True" 传中文参数,比如,传值“保险杠”的时候C#不管是用Server.UrlEncode编码还是HttpUtility.UrlEncode编码本来重写是这个,search.aspx?value=%e4%bf%9d%e9%99%a9%e6%9d%a0
写出来的为啥成了search.aspx?value=%bfe9a9%e6a0   页面上显示1,2,3,4,5页的时候是 这种编码,导致关键字搜索不到结果

解决方案 »

  1.   

    AspNetPager这个分页控件 会自己改变编码方式?
      

  2.   

    AspNetPager1.UrlRewritePattern=search.aspx?value=%e4%bf%9d%e9%99%a9%e6%9d%a0
    显示出来会自己编码成
    search.aspx?value=%bfe9a9%e6a0 这是什么编码格式????
      

  3.   

    匹配的时候写中文
    search.aspx?value=保险杠
      

  4.   


     我说的是AspNetPager这个控件是否会自己编码,,url我已经编码过了,它自己又编码一回另:url上不要传中文
      

  5.   

    版本旧了吧,换最新的试试更新历史:
    Version 7.3.2(2010-2-26)
    1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
    Version 7.3.1(2010-2-8)
    1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级到该本后UrlRewritePattern属性值中的字符将不再被编码;
      

  6.   


    我用的就是最新版本哦,7。3。2。0
    不用Server.UrlEncode或者HttpUtility编码直接这样输都会乱码都会再编码,看来版本升级没解决啊            string aa ="北京";
                aa =  Server.UrlEncode(aa);
                AspNetPager1.UrlRewritePattern = "aaaa.aspx?page={0}&value="+aa;
    调试跟踪是现实没错,//aaaa.aspx?page={0}&value=%b1%b1%be%a9到了IE里还是改了
    aaaa.aspx?page=1&value=b1a9//改成这样了,这是什么编码
    aaaa.aspx?page=2&value=b1a9
    aaaa.aspx?page=3&value=b1a9
    ....
     
      

  7.   


    作者,这个问题肯定没解决哦
    什么都不用,直接在html里就写死了,它都还编码
               <webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" 
                  LastPageText="未页" NextPageText="下一页" PrevPageText="上一页"
             ShowPageIndexBox="Never" NumericButtonCount="5" EnableUrlRewriting="True" UrlPageSizeName="pageindex" 
            UrlPaging="True" EnableViewState="False" PageSize="10" UrlRewritePattern="aaaa.aspx?page={0}&value=%b1%b1%be%a9"></webdiyer:AspNetPager>
      

  8.   

    我晕,这个不是编码不编码的问题,AspNetPager对urlRewritePattern中的参数没有编码,你这里的问题是用了%这个符号,这个符号在UrlRewritePattern中有特殊用途,你看一下UrlRewritePattern这个属性的说明就知道了,象你上面这种设置UrlRewritePattern的方式不对,正确的应该是:UrlRewritePattern="aaaa.aspx?page={0}&value=%value%" ,这样在运行时AspNetPager会自动将%value%转换为url参数value的值。有空多看一下帮助,AspNetPager发布这么多年,经过大家不断提改进意见,基本上大部分问题都解决了,象楼主这样的问题前不久也有人向我提过,我都帮助解决了(升级到7.3.1版就是)
      

  9.   


    你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的7.3.2)        private void Bind()
            {
                int record;
                this.Repeater1.DataSource = GetDataForPage(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, "1=1", out record, "Cars", "*");//任何数据源
                this.Repeater1.DataBind();
         
                string aa = "北京";
                aa = HttpUtility.UrlEncode(aa, System.Text.Encoding.GetEncoding("GB2312"));//编码出来北京是 "%b1%b1%be%a9"            AspNetPager1.UrlRewritePattern = "aa.aspx?page={0}&value=" + aa;//调试跟踪,url是"aa.aspx?page={0}&value=%b1%b1%be%a9"
                AspNetPager1.RecordCount = record;
            }页面控件显示的还是 http://localhost:5134/aa.aspx?page=2&value=b1a9
    %b1%b1%be%a9变成b1a9了
      

  10.   

    你仔细看了我上面的回复和AspNetPager控件的UrlRewritePattern属性的帮助了吗?%是UrlRewritePattern中的特殊用途的字符,%aa% 这样的符号的UrlRewritePattern中的意思是从url中获取aa这个参数的值并替换 %aa% ,所以在你的例子中,不需要手动给url参数value赋值,用%value%代替就行了,UrlRewritePattern="aaaa.aspx?page={0}&value=%value%"
      

  11.   

    UrlRewritePattern属性说明:http://www.webdiyer.com/AspNetPagerDocs/Wuqi.Webdiyer.AspNetPager.UrlRewritePattern.html如果UrlRewritePattern中有类似于 %b1% 这样的字符,那么运行时AspNetPager会从当前url中获取 b1 这个参数的值并替换 %b1%,如果找不到 b1 这个参数,那么 %b1% 将被替换成空字符串,这就是楼主的问题所在。你现在的url中有value这个参数和值,所以要在UrlRewritePattern中设置value的值,必须用 %value% ,而不是你现在的那种直接写死的方法。