AspNetPager这个分页控件会自己改URl编码吗?

时间:2022-11-30 17:37:44
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页的时候是 这种编码,导致关键字搜索不到结果


16 个解决方案

#1


? LZ想要问什么? 

#2


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

#3


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

#4


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

#5


引用 4 楼 jshi123 的回复:
匹配的时候写中文
search.aspx?value=保险杠


 我说的是AspNetPager这个控件是否会自己编码,,url我已经编码过了,它自己又编码一回

另:url上不要传中文

#6


版本旧了吧,换最新的试试

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

#7


引用 6 楼 webdiyer 的回复:
版本旧了吧,换最新的试试

更新历史:
Version 7.3.2(2010-2-26)
1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
Version 7.3.1(2010-2-8)
1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级……


UP

#8


引用 6 楼 webdiyer 的回复:
版本旧了吧,换最新的试试

更新历史:
Version 7.3.2(2010-2-26)
1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
Version 7.3.1(2010-2-8)
1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级……


我用的就是最新版本哦,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
....
 

#9


引用 6 楼 webdiyer 的回复:
版本旧了吧,换最新的试试

更新历史:
Version 7.3.2(2010-2-26)
1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
Version 7.3.1(2010-2-8)
1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级……


作者,这个问题肯定没解决哦
什么都不用,直接在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>

#10


我晕,这个不是编码不编码的问题,AspNetPager对urlRewritePattern中的参数没有编码,你这里的问题是用了%这个符号,这个符号在UrlRewritePattern中有特殊用途,你看一下UrlRewritePattern这个属性的说明就知道了,象你上面这种设置UrlRewritePattern的方式不对,正确的应该是:UrlRewritePattern="aaaa.aspx?page={0}&value=%value%" ,这样在运行时AspNetPager会自动将%value%转换为url参数value的值。

有空多看一下帮助,AspNetPager发布这么多年,经过大家不断提改进意见,基本上大部分问题都解决了,象楼主这样的问题前不久也有人向我提过,我都帮助解决了(升级到7.3.1版就是)

#11


引用 10 楼 webdiyer 的回复:
我晕,这个不是编码不编码的问题,AspNetPager对urlRewritePattern中的参数没有编码,你这里的问题是用了%这个符号,这个符号在UrlRewritePattern中有特殊用途,你看一下UrlRewritePattern这个属性的说明就知道了,象你上面这种设置UrlRewritePattern的方式不对,正确的应该是:UrlRewritePattern="aaaa.aspx?pa……


你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的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了

#12


引用 11 楼 huangchena 的回复:
你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的7.3.2)

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

#13


UrlRewritePattern属性说明: http://www.webdiyer.com/AspNetPagerDocs/Wuqi.Webdiyer.AspNetPager.UrlRewritePattern.html

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

#14


恩,明白作者的意思了,不用编码在设置了

#15


楼主怎么解决的我加了百分号还是不行

#16


需要设置UrlPaging属性

#1


? LZ想要问什么? 

#2


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

#3


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

#4


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

#5


引用 4 楼 jshi123 的回复:
匹配的时候写中文
search.aspx?value=保险杠


 我说的是AspNetPager这个控件是否会自己编码,,url我已经编码过了,它自己又编码一回

另:url上不要传中文

#6


版本旧了吧,换最新的试试

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

#7


引用 6 楼 webdiyer 的回复:
版本旧了吧,换最新的试试

更新历史:
Version 7.3.2(2010-2-26)
1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
Version 7.3.1(2010-2-8)
1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级……


UP

#8


引用 6 楼 webdiyer 的回复:
版本旧了吧,换最新的试试

更新历史:
Version 7.3.2(2010-2-26)
1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
Version 7.3.1(2010-2-8)
1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级……


我用的就是最新版本哦,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
....
 

#9


引用 6 楼 webdiyer 的回复:
版本旧了吧,换最新的试试

更新历史:
Version 7.3.2(2010-2-26)
1.修正了PageIndexBoxType为DropDownList时,PageIndexBoxClass和PageIndexBoxStyle属性无效的bug;
Version 7.3.1(2010-2-8)
1.解决了Url重写时,UrlRewritePattern属性中的字符被编码的问题,升级……


作者,这个问题肯定没解决哦
什么都不用,直接在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>

#10


我晕,这个不是编码不编码的问题,AspNetPager对urlRewritePattern中的参数没有编码,你这里的问题是用了%这个符号,这个符号在UrlRewritePattern中有特殊用途,你看一下UrlRewritePattern这个属性的说明就知道了,象你上面这种设置UrlRewritePattern的方式不对,正确的应该是:UrlRewritePattern="aaaa.aspx?page={0}&value=%value%" ,这样在运行时AspNetPager会自动将%value%转换为url参数value的值。

有空多看一下帮助,AspNetPager发布这么多年,经过大家不断提改进意见,基本上大部分问题都解决了,象楼主这样的问题前不久也有人向我提过,我都帮助解决了(升级到7.3.1版就是)

#11


引用 10 楼 webdiyer 的回复:
我晕,这个不是编码不编码的问题,AspNetPager对urlRewritePattern中的参数没有编码,你这里的问题是用了%这个符号,这个符号在UrlRewritePattern中有特殊用途,你看一下UrlRewritePattern这个属性的说明就知道了,象你上面这种设置UrlRewritePattern的方式不对,正确的应该是:UrlRewritePattern="aaaa.aspx?pa……


你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的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了

#12


引用 11 楼 huangchena 的回复:
你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的7.3.2)

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

#13


UrlRewritePattern属性说明: http://www.webdiyer.com/AspNetPagerDocs/Wuqi.Webdiyer.AspNetPager.UrlRewritePattern.html

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

#14


恩,明白作者的意思了,不用编码在设置了

#15


楼主怎么解决的我加了百分号还是不行

#16


需要设置UrlPaging属性

#17