传中文参数,比如,传值“保险杠”的时候
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 这是什么编码格式????
显示出来会自己编码成
search.aspx?value=%bfe9a9%e6a0 这是什么编码格式????
#4
匹配的时候写中文
search.aspx?value=保险杠
search.aspx?value=保险杠
#5
我说的是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属性值中的字符将不再被编码;
更新历史:
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
UP
#8
我用的就是最新版本哦,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
作者,这个问题肯定没解决哦
什么都不用,直接在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版就是)
有空多看一下帮助,AspNetPager发布这么多年,经过大家不断提改进意见,基本上大部分问题都解决了,象楼主这样的问题前不久也有人向我提过,我都帮助解决了(升级到7.3.1版就是)
#11
你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的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
你仔细看了我上面的回复和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% ,而不是你现在的那种直接写死的方法。
如果UrlRewritePattern中有类似于 %b1% 这样的字符,那么运行时AspNetPager会从当前url中获取 b1 这个参数的值并替换 %b1%,如果找不到 b1 这个参数,那么 %b1% 将被替换成空字符串,这就是楼主的问题所在。你现在的url中有value这个参数和值,所以要在UrlRewritePattern中设置value的值,必须用 %value% ,而不是你现在的那种直接写死的方法。
#14
恩,明白作者的意思了,不用编码在设置了
#15
楼主怎么解决的我加了百分号还是不行
#16
需要设置UrlPaging属性
#17
#1
? LZ想要问什么?
#2
AspNetPager这个分页控件 会自己改变编码方式?
#3
AspNetPager1.UrlRewritePattern=search.aspx?value=%e4%bf%9d%e9%99%a9%e6%9d%a0
显示出来会自己编码成
search.aspx?value=%bfe9a9%e6a0 这是什么编码格式????
显示出来会自己编码成
search.aspx?value=%bfe9a9%e6a0 这是什么编码格式????
#4
匹配的时候写中文
search.aspx?value=保险杠
search.aspx?value=保险杠
#5
我说的是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属性值中的字符将不再被编码;
更新历史:
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
UP
#8
我用的就是最新版本哦,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
作者,这个问题肯定没解决哦
什么都不用,直接在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版就是)
有空多看一下帮助,AspNetPager发布这么多年,经过大家不断提改进意见,基本上大部分问题都解决了,象楼主这样的问题前不久也有人向我提过,我都帮助解决了(升级到7.3.1版就是)
#11
你这个问题我再次研究了好久,确实没解决 (最新版本,下了好几次的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
你仔细看了我上面的回复和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% ,而不是你现在的那种直接写死的方法。
如果UrlRewritePattern中有类似于 %b1% 这样的字符,那么运行时AspNetPager会从当前url中获取 b1 这个参数的值并替换 %b1%,如果找不到 b1 这个参数,那么 %b1% 将被替换成空字符串,这就是楼主的问题所在。你现在的url中有value这个参数和值,所以要在UrlRewritePattern中设置value的值,必须用 %value% ,而不是你现在的那种直接写死的方法。
#14
恩,明白作者的意思了,不用编码在设置了
#15
楼主怎么解决的我加了百分号还是不行
#16
需要设置UrlPaging属性