IIRF UrlRewrite PostBack地址问题
跟着老赵的教程做的, 出了些问题。(http://www.cnblogs.com/JeffreyZhao/archive/2008/01/13/Url-Rewrite-3.html)
就是点提交后就转成.aspx页面的,我想让它还是.html的, 得不到Request.ServerVariables["HTTP_X_REWRITE_URL"]的值 ,是空的, 不知道错在哪了?
普通Urlrewrite是可以了, 输入register.html 转到 register.aspx了
规则如下:
RewriteRule ^/nmn/member/(.*?)\.html/nmn/member/$1.aspx [I, L, U]
点提交后就不灵了,也按老赵说的做了
namespace DOTA.Browser { public class FormRewriterControlAdapter : System.Web.UI.Adapters.ControlAdapter { protected override void Render(HtmlTextWriter writer) { base.Render(new RewriteFormHtmlTextWriter(writer)); } } public class RewriteFormHtmlTextWriter : HtmlTextWriter { public RewriteFormHtmlTextWriter(HtmlTextWriter writer) : base(writer) { this.InnerWriter = writer.InnerWriter; } public RewriteFormHtmlTextWriter(TextWriter writer) : base(writer) { this.InnerWriter = writer; } public override void WriteAttribute(string name, string value, bool fEncode) { if (name == "action") { HttpContext context = HttpContext.Current; if (context.Items["ActionAlreadyWritten"] == null) { value = context.Request.ServerVariables["HTTP_X_REWRITE_URL"] ?? context.Request.RawUrl; context.Response.Write(value); //这里执行了,源代码里有,是Request.RawUrl的值。 HTTP_X_REWRITE_URL 这个是空的. context.Items["ActionAlreadyWritten"] = true; } } base.WriteAttribute(name, value, fEncode); } }}<browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.HtmlControls.HtmlForm" adapterType="DOTA.Browser.FormRewriterControlAdapter" /> </controlAdapters> </browser>