webdiyer来

cnlamar 2007-01-31 01:42:40
老哥,还记得我吧?最近用了你新版的分页控件,发现一个以前就存在的问题,对URL重写支持得不好的问题,在新版中仍旧存在
在未开启你的URL重写的情况下,url会正确,但会将部分被重写的参数又暴露出来,导致错误发生。
在开启你的URL重写的情况下,URL会将由参数重写出来的路径丢失掉。
本想下你的代码自己改了先用的,但是发现缺少部分资源文件,呵呵,无论如何还是告诉你一下比较好吧,MSN上你最近很少上,我又比较急用,所以特地过来发个帖子喊一声:D
...全文
517 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyz1030 2011-07-12
  • 打赏
  • 举报
回复
ding
fangyinan 2011-05-11
  • 打赏
  • 举报
回复
好东西
xray2005 2007-08-29
  • 打赏
  • 举报
回复
呵呵
还没用到这个功能
帮顶哈....

海洋齐齐 2007-08-29
  • 打赏
  • 举报
回复
蝶恋花雨 2007-08-29
  • 打赏
  • 举报
回复
学习收藏了
cime63 2007-08-29
  • 打赏
  • 举报
回复
mark
babay2008 2007-08-29
  • 打赏
  • 举报
回复
mark.
wxlwxlwxlwxl 2007-08-29
  • 打赏
  • 举报
回复
mark.
zhulei2008 2007-08-29
  • 打赏
  • 举报
回复
没用过。。
zhoucaifu 2007-08-29
  • 打赏
  • 举报
回复
晕~`不懂
bluedreams85 2007-08-29
  • 打赏
  • 举报
回复
收藏
reborter 2007-01-31
  • 打赏
  • 举报
回复
收藏
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
对于分页url重写后的问题,这样改就可以兼容了,当然了,之前的重写规则也得做一些配合调整,至于这段代码是否会引发其他问题,还不确定,应当不会。

string filePath = Page.Request.FilePath;
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());
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
至于启用了分页URL重写导致的问题,估计不能用ResolveUrl了吧,前面的代码有问题应该是,将1118和1119两行
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;
}
flyin2006 2007-01-31
  • 打赏
  • 举报
回复
diu
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
写了段抓querystring来分析的代码,替换掉1119行的urlParams = Page.Request.QueryString;或许就可以解决问题了:D,不过代码写得拙劣,只是能实现功能而已。
----------------------------
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;
buller 2007-01-31
  • 打赏
  • 举报
回复
帮顶,蹭粪
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
解决应该也简单,
开启分页重写后,不要带路径,直接走文件就可以了
关了的话,取querystring来分析的时候,不要直接取,而是去抓url来分析。
cnlamar 2007-01-31
  • 打赏
  • 举报
回复
看了下控件的代码,貌似用了url重写之后就使用的相对路径带上了目录,而不单纯的是最后的文件名,但是获取的目录又是真实的目录路径而非重写后的,导致了该问题的发生,而URL重写关闭的话,则直接链到文件上,于是没有这个问题,但却将url重写后应当隐蔽的参数暴露出来了,比如:
原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这个应该已经屏蔽的又输出来了
hertcloud 2007-01-31
  • 打赏
  • 举报
回复
呵呵
还没用到这个功能
帮顶哈....
加载更多回复(2)
这个分页控件,修改连接字符串,和SQL语句,就可以了。 剩下的直接粘贴进去。就行。 强大的各种属性,附带多种CSS,想怎么分就怎么分页! 拖入工具箱后实现 1.2.3步(你修改下连接符,表就可以了) 控件.aspx页面 复制粘贴到前台页面适当位置即可 <webdiyer:AspNetPager ID="Pager1" runat="server" pagesize="9" CssClass="anpager" onpagechanged="AspNetPager1_PageChanged" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" ShowPageIndexBox="Never">webdiyer:AspNetPager> 控件.cs页面,后台页面 只需3步 设置连接字符串 string connstring = "Data Source=.;Initial Catalog=数据库名;User ID=用户名;Password=密码"; 程序页面内容:复制粘贴修改几个 //首页加载-1 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { SqlConnection conn = null; try { conn = new SqlConnection(connstring); conn.Open(); SqlCommand Count = new SqlCommand(); Count.Connection = conn; //修改你们查询的表 Count.CommandText = "select count(*) from products"; //查询 Pager1.RecordCount = (int)Count.ExecuteScalar(); //Pager1为分页控件ID BindData(); } finally { conn.Close(); } } } //绑定数据-2 public void BindData() { SqlConnection conn = new SqlConnection(connstring); string sql = "select * from products";//修改你们的查询语句: //select top查询语句 SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataSet ds = new DataSet(); da.Fill(ds, Pager1.PageSize * (Pager1.CurrentPageIndex - 1), Pager1.PageSize, "temptbl"); DataTable dt = ds.Tables["temptbl"]; DataList1.DataSource = dt; DataList1.DataBind(); } //控件事件-每次重新绑定 protected void AspNetPager1_PageChanged(object src, EventArgs e) { BindData(); }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧