通用基类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO ;
namespace BasicCompent
{
public class BasePage:Page
{
private bool isLoadOk;
private bool isInitOk;
protected override void OnInit(EventArgs e)
{
if (!isInitOk)
{
HtmlLink hl = new HtmlLink();
hl.Href = "~/default.css";
hl.Attributes.Add("rel", "stylesheet");
hl.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(hl);
HtmlMeta m = new HtmlMeta();
m.Name = "description";
m.Content = "这个是用来SEO";
Page.Header.Controls.AddAt(0, m);
isInitOk = true;
base.OnInit(e);
}
}
protected override void OnLoad(EventArgs e)
{
if (!isLoadOk)
{
Response.Filter = new PageResponseFilter(Response.Filter, Response.HeaderEncoding);
isLoadOk = true;
base.OnLoad(e);
}
}
protected override void Render(HtmlTextWriter writer)
{
if (writer is Html32TextWriter)
{
writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
}
else
{
writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
}
base.Render(writer);
}
internal class FormFixerHtml32TextWriter : 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 fEncode)
{
if (_url != null && string.Compare(name, "action", true, System.Globalization.CultureInfo.CurrentCulture) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, fEncode);
}
public new int Indent
{
get { return 0; }
set { base.Indent = 0; }
}
}
internal class FormFixerHtmlTextWriter : HtmlTextWriter
{
private string _url;//假的URL
internal FormFixerHtmlTextWriter(TextWriter writer):base(writer ,"")
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (_url != null && string.Compare(name, "action", true, System.Globalization.CultureInfo.CurrentCulture) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, fEncode);
}
public new int Indent
{
get { return 0; }
set { base.Indent = 0; }
}
}
}
}