[英]Changing postback URL to hide Default.aspx
我試圖通過使用以下格式的附加查詢字符串的文件夾來向用戶隱藏文檔名稱:
http:// localhost:53779 / s /?x = FF2F60195B21487FA19A8EE7767A206C
當我發回頁面時,它會將其定向到物理頁面:
http:// localhost:53779 / s / default.aspx?x = FF2F60195B21487FA19A8EE7767A206C
可以裝飾回發地址,以便可以從客戶端瀏覽器中省略default.aspx嗎?
從.Net 2.0(我認為)開始,您可以將Form的action屬性手動設置為所需的任何值:
<form id="form1" runat="server" action="/">
您也可以在代碼隱藏中執行此操作:
form1.Action = "/?" & Request.ServerVariables("QUERY_STRING")
我正在使用此ControlAdapter,它將FORM元素的action屬性修改為實際的url。 這對於URL重寫也很有用。
public class FormRewriteAdapter : System.Web.UI.Adapters.ControlAdapter
{
[DebuggerStepThrough()]
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(System.IO.TextWriter writer)
: base(writer)
{
base.InnerWriter = writer;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if ((name == "action"))
{
System.Web.HttpContext Context = System.Web.HttpContext.Current;
if (Context.Items["ActionAlreadyWritten"] == null)
{
value = Context.Request.RawUrl;
Context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}
您必須像這樣在App_Browsers目錄中注冊此適配器:
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm" adapterType="MyNamaspace.FormRewriteAdapter" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.