现在的位置: 首页 > 综合 > 正文

url重写以后保持postback地址

2013年09月01日 ⁄ 综合 ⁄ 共 1392字 ⁄ 字号 评论关闭

让所有页面集成一下类即可实现url重写以后保持postback地址

using System;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Configuration;

namespace BLL
{
/// <summary>
/// PageBase 的摘要说明。
/// </summary>
public class PageBase : Page
{
private static object obj = new object();
//// <summary>
/// 重写默认的HtmlTextWriter方法,修改form标记中的value属性,使其值为重写的URL而不是真实URL。www.SvnHost.cn
/// </summary>
/// <param name="writer"></param>
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);
}
}

public class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
{
public FormFixerHtml32TextWriter(TextWriter writer)
:
base(writer)
{
}

public override void WriteAttribute(string name, string value, bool encode)
{
// 如果当前输出的属性为form标记的action属性,则将其值替换为重写后的虚假URL
if (string.Compare(name, "action", true) == 0)
{
value
= HttpContext.Current.Request.RawUrl;
}
base.WriteAttribute(name, value, encode);
}
}


public class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
{
public FormFixerHtmlTextWriter(TextWriter writer)
:
base(writer)
{
}

public override void WriteAttribute(string name, string value, bool encode)
{
if (string.Compare(name, "action", true) == 0)
{
value
= HttpContext.Current.Request.RawUrl;
}

base.WriteAttribute(name, value, encode);
}
}
}

抱歉!评论已关闭.