我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷。例如說 "http://localhost:1897/News/Press/Content.aspx/123?id=1#toc",我們想要取得網址裡第一層目錄的名字(News)用以判斷不同的頁面標題(Page Title)。 我看很多人都用字串的 IndexOf 方法與 Substring 方法: Request.Url.PathAndQuery.Substring(1, Request.Url.PathAndQuery.IndexOf("/", 1)-1) 這實在太埋沒 .NET 的強大設計了,事實上在 Request 物件就已經提供很多方便的屬性(Property)可供取得網址的片段。 底下這張表就是各種跟 Browser Request 的網址相關的屬性與用法:
所以當你看了這張表之後,你還會想用 Request.Url.PathAndQuery.Substring(1, Request.Url.PathAndQuery.IndexOf("/", 1)-1) 這種寫法嗎? 用這樣寫 Request.Url.Segments[1].Replace("/", "") 不是又短又直覺嗎? ^_^ 以下是產生以上表格的程式碼: protected void Page_Load(object sender, EventArgs e) StringBuilder sb = new StringBuilder(); sb.Append("<table cellpadding=3 cellspacing=0 border=1>"); sb.Append("<tr><td colspan=2>"); // Request.ApplicationPath // Request.PhysicalPath // System.IO.Path.GetDirectoryName(Request.PhysicalPath) // Request.PhysicalApplicationPath // System.IO.Path.GetFileName(Request.PhysicalPath) // Request.CurrentExecutionFilePath // Request.FilePath // Request.Path // Request.RawUrl // Request.Url.AbsolutePath // Request.Url.AbsoluteUri // Request.Url.Scheme // Request.Url.Host // Request.Url.Port // Request.Url.Authority // local Request.Url.LocalPath // Request.PathInfo // Request.Url.PathAndQuery // Request.Url.Query // Request.Url.Fragment // Request.Url.Segments sb.Append("</table>"); ltlTable.Text = sb.ToString(); |
Request.url用法
原文:Request.url用法