URL重写问题 急。。。

jameshnb 2008-07-07 12:43:59
我用的微软的URLRewriter.dll实现了URL重写,但是在这个页面实现翻页功能刷新的时候URL变成了实际的地址, 后来我用ActionlessForm.DLL解决回发的问题,但是翻页时就报 “由于网页地址不正确,正在查找的网页无法显示。HTTP 错误 405 - 禁止访问资源” 急啊。。。。。。。。。。。。。。。。。。。。
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunxw18 2008-07-07
  • 打赏
  • 举报
回复
其实用IHttpMudel自己写也不是很难,网上很多这样的代码的!
forty 2008-07-07
  • 打赏
  • 举报
回复
重写页面里继承这个PAGE类,然后在.aspx页面加上这个SCRIPT
<script>
try{document.forms[0].action=""}catch(ex){}
</script>

CS文件里


public partial class BBS_ItemList : URLRewriter.OldPage
......



OLDPAGE类


using System;
using System.IO;
using System.Web;
using System.Web.UI;

namespace URLRewriter
{
public class OldPage:Page
{
public OldPage()
{ }
protected override void Render(HtmlTextWriter writer)
{
if (writer is System.Web.UI.Html32TextWriter)
{
writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
}
else
{
writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
}
base.Render(writer);
}
}

internal class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
{
private string _url; // 假的URL
internal FormFixerHtml32TextWriter(TextWriter writer)
: base(writer)
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (_url != null && string.Compare(name, "action", true) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, encode);
}
}
internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
{
private string _url;
internal FormFixerHtmlTextWriter(TextWriter writer)
: base(writer)
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (_url != null && string.Compare(name, "action", true) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, encode);
}
}

}
brz97 2008-07-07
  • 打赏
  • 举报
回复
请楼主贴出页面关键代码,否则猜不出你的链接是怎么写的

理论上重写过的url在翻页时也要调用重写的url,使用真实url可能会出现404错误(分页参数没有进行重写时不会出现错误)
seesea125 2008-07-07
  • 打赏
  • 举报
回复
ActionlessForm.DLL和翻页没有关系,ActionlessForm.DLL是解决回发问题,翻页相当于重新打开页面,只需要改变url的page=xx就可以了
也就是说,你的翻页的页码链接,是要重新打开网页的
比如
<a href="aa_2.shtml">第二页</a>
<a href="aa_3.shtml">第三页</a>

注意aa_2.shtml是通过url重写的路径了,其实就是aa.aspx?page=2

jameshnb 2008-07-07
  • 打赏
  • 举报
回复
这个方法我用过,后面的地址是个假地址 例如www.hao.com 翻页时页面确实刷新,也没有显示为实际地址www.hao.com/aaa/bb.aspx, 但是地址变成了www.hao.com/index.aspx 这样显示不行,我需要的是www.hao.com
wszhoho 2008-07-07
  • 打赏
  • 举报
回复
http://blog.csdn.net/wszhoho/archive/2007/08/14/1742260.aspx

62,161

社区成员

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

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

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

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