老哥,还记得我吧?最近用了你新版的分页控件,发现一个以前就存在的问题,对URL重写支持得不好的问题,在新版中仍旧存在
在未开启你的URL重写的情况下,url会正确,但会将部分被重写的参数又暴露出来,导致错误发生。
在开启你的URL重写的情况下,URL会将由参数重写出来的路径丢失掉。
本想下你的代码自己改了先用的,但是发现缺少部分资源文件,呵呵,无论如何还是告诉你一下比较好吧,MSN上你最近很少上,我又比较急用,所以特地过来发个帖子喊一声:D
在未开启你的URL重写的情况下,url会正确,但会将部分被重写的参数又暴露出来,导致错误发生。
在开启你的URL重写的情况下,URL会将由参数重写出来的路径丢失掉。
本想下你的代码自己改了先用的,但是发现缺少部分资源文件,呵呵,无论如何还是告诉你一下比较好吧,MSN上你最近很少上,我又比较急用,所以特地过来发个帖子喊一声:D
原URL:http://www.webdiyer.com/aa/cc.aspx?name=bb
重写为:http://www.webdiyer.com/aa/bb/cc.aspx
在控件下,
开启url重写后会被输出为/aa/cc_2.aspx这样的,将bb丢失了
关闭后将会被输出为cc.aspx?name=bb这样的,将name=bb这个应该已经屏蔽的又输出来了
开启分页重写后,不要带路径,直接走文件就可以了
关了的话,取querystring来分析的时候,不要直接取,而是去抓url来分析。
----------------------------
System.Collections.Specialized.NameValueCollection urlParams = new System.Collections.Specialized.NameValueCollection();
string[] QueryStringArray = null;
string[] tmpArray = null;
if(Page.Request.RawUrl.IndexOf('?') > -1)
{
QueryStringArray = Page.Request.RawUrl.Substring(Page.Request.RawUrl.IndexOf('?')+1).Split('&');
}
for (int i = 0; i < QueryStringArray.Length; i++)
{
tmpArray = QueryStringArray[i].Split('=');
if (tmpArray.Length == 2)
{
urlParams.Add(tmpArray[0], tmpArray[1]);
}
else if (tmpArray.Length == 1)
{
urlParams.Add(tmpArray[0], tmpArray[0]);
}
}
QueryStringArray = null;
tmpArray = null;
currentUrl = Page.Request.Path;
urlParams = Page.Request.QueryString;
替换为:
urlParams = new NameValueCollection();
string[] QueryStringArray = null;
string[] tmpArray = null;
int IndexOfQueryString = Page.Request.RawUrl.IndexOf('?');
if (IndexOfQueryString > -1)
{
QueryStringArray = Page.Request.RawUrl.Substring(IndexOfQueryString + 1).Split('&');
currentUrl = Page.Request.RawUrl.Substring(0, IndexOfQueryString);
}
else
{
currentUrl = Page.Request.RawUrl;
}
if (QueryStringArray != null)
{
for (int i = 0; i < QueryStringArray.Length; i++)
{
tmpArray = QueryStringArray[i].Split('=');
if (tmpArray.Length == 2)
{
urlParams.Add(tmpArray[0], tmpArray[1]);
}
else if (tmpArray.Length == 1)
{
urlParams.Add(tmpArray[0], tmpArray[0]);
}
}
QueryStringArray = null;
tmpArray = null;
}
return Path.GetFileNameWithoutExtension(filePath) + "_{0}" + Path.GetExtension(filePath);
更换为:
return Path.GetFileNameWithoutExtension(currentUrl) + "_{0}" + Path.GetExtension(currentUrl);return ResolveUrl(string.Format(UrlRewritePattern, (pageIndex == -1) ? "\"+pi+\"" : pageIndex.ToString()));
更换为:
return string.Format(UrlRewritePattern, (pageIndex == -1) ? "\"+pi+\"" : pageIndex.ToString());