前不久做了一下
Rewriter二级域名和URL重写,结果发现好是好,但是,查看HTML源代码中,发现了FORM中的地址还是
<form name="aspnetForm" method="post" action="../aa/bb.aspx?cid=2" id="aspnetForm">
有什么办法让form action和重写的URL一样?
找了好一会,找到解决方案
public class BasePage:Page
{
protected override void Render(HtmlTextWriter writer)
{
writer = new FormFixer(writer);
base.Render(writer);
}
internal class FormFixer : HtmlTextWriter
{
private bool _isInForm = false;
public FormFixer(System.IO.TextWriter writer) : base(writer) { }
public FormFixer(System.IO.TextWriter writer, string tagString) : base(writer, tagString) { }
public override void WriteBeginTag(string tagName)
{
if (string.Compare(tagName, "form") != 0)
this._isInForm = true;
base.WriteBeginTag(tagName);
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (this._isInForm && name.Equals("action"))
value = HttpContext.Current.Request.RawUrl;
base.WriteAttribute(name, value, fEncode);
}
}
}
资料来源:http://hi.baidu.com/railscn/blog/item/45bb9e2292b982f3d6cae2c6.html