求助:关于URL重写回发的 老问题.

子游自在 2011-02-14 09:57:03
URL 重写成功,将Default.aspx重写为default.html
目前遇到回发,不想修改页面,就继承Page,如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.IO;

namespace TestUrlReWrite.BaseClass
{
public class BasePage : Page
{
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);
}
}
}


回发没有被处理,直接访问default.aspx页面,还是ASPX页面.
谁知道问题 何在?
...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangwenquan123 2011-02-15
  • 打赏
  • 举报
回复
没注意看lz不要这种方法= =!
huangwenquan123 2011-02-15
  • 打赏
  • 举报
回复
namespace ActionlessForm
{
public class Form : System.Web.UI.HtmlControls.HtmlForm
{
protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}
}
}

<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 

<form runat="server"></form>
//替换为:
<skm:Form id="Form1" method="post" runat="server"></skm:Form>
子游自在 2011-02-14
  • 打赏
  • 举报
回复
1楼代码有什么问题
子游自在 2011-02-14
  • 打赏
  • 举报
回复
将 <form runat="server">(如果有)替换为:

<skm:Form id="Form1" method="post" runat="server">
并将右边的 </form> 标记替换为:

</skm:Form>



类似这种方法的确行,但是 我不想改动页面,用page继承的,1楼代码有什么问题
子游自在 2011-02-14
  • 打赏
  • 举报
回复
要重写的页面已经继承这个 basepage了
子游自在 2011-02-14
  • 打赏
  • 举报
回复
1楼代码有什么问题

62,047

社区成员

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

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

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

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