Request.url用法

简介: 原文:Request.url用法 我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷。例如說 "http://localhost:1897/News/Press/Content.aspx/123?id=1#toc",我們想要取得網址裡第一層目錄的名字(News)用以判斷不同的頁面標題(Page Title)。
原文: Request.url用法

我們在開發網頁應用程式,時常需要去解析網址(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 的網址相關的屬性與用法:

網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc
Request.ApplicationPath /
Request.PhysicalPath D:\Projects\Solution\web\News\Press\Content.aspx
System.IO.Path.GetDirectoryName(Request.PhysicalPath) D:\Projects\Solution\web\News\Press
Request.PhysicalApplicationPath D:\Projects\Solution\web\
System.IO.Path.GetFileName(Request.PhysicalPath) Content.aspx
Request.CurrentExecutionFilePath /News/Press/Content.aspx
Request.FilePath /News/Press/Content.aspx
Request.Path /News/Press/Content.aspx/123
Request.RawUrl /News/Press/Content.aspx/123?id=1
Request.Url.AbsolutePath /News/Press/Content.aspx/123
Request.Url.AbsoluteUri http://localhost:1897/News/Press/Content.aspx/123?id=1
Request.Url.Scheme http
Request.Url.Host localhost
Request.Url.Port 1897
Request.Url.Authority localhost:1897
Request.Url.LocalPath /News/Press/Content.aspx/123
Request.PathInfo /123
Request.Url.PathAndQuery /News/Press/Content.aspx/123?id=1
Request.Url.Query ?id=1
Request.Url.Fragment
Request.Url.Segments /
News/
Press/
Content.aspx/
123

所以當你看了這張表之後,你還會想用 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>");
        sb.Append("網址:"http://localhost:1897/News/Press/Content.aspx/123?id=1#toc">http://localhost:1897/News/Press/Content.aspx/123?id=1#toc        sb.Append("</td></tr>"); ");

        // Request.ApplicationPath
        sb.Append("<tr><td>");
        sb.Append("Request.ApplicationPath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.ApplicationPath + "</b>");
        sb.Append("</td></tr>");

        // Request.PhysicalPath
        sb.Append("<tr><td>");
        sb.Append("Request.PhysicalPath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.PhysicalPath + "</b>");
        sb.Append("</td></tr>");

        // System.IO.Path.GetDirectoryName(Request.PhysicalPath)
        sb.Append("<tr><td>");
        sb.Append("System.IO.Path.GetDirectoryName(Request.PhysicalPath)");
        sb.Append("</td><td>");
        sb.Append("<b>" + System.IO.Path.GetDirectoryName(Request.PhysicalPath) + "</b>");
        sb.Append("</td></tr>");

        // Request.PhysicalApplicationPath
        sb.Append("<tr><td>");
        sb.Append("Request.PhysicalApplicationPath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.PhysicalApplicationPath + "</b>");
        sb.Append("</td></tr>");

        // System.IO.Path.GetFileName(Request.PhysicalPath)
        sb.Append("<tr><td>");
        sb.Append("System.IO.Path.GetFileName(Request.PhysicalPath)");
        sb.Append("</td><td>");
        sb.Append("<b>" + System.IO.Path.GetFileName(Request.PhysicalPath) + "</b>");
        sb.Append("</td></tr>");

        // Request.CurrentExecutionFilePath
        sb.Append("<tr><td>");
        sb.Append("Request.CurrentExecutionFilePath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.CurrentExecutionFilePath + "</b>");
        sb.Append("</td></tr>");

        // Request.FilePath
        sb.Append("<tr><td>");
        sb.Append("Request.FilePath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.FilePath + "</b>");
        sb.Append("</td></tr>");

        // Request.Path
        sb.Append("<tr><td>");
        sb.Append("Request.Path");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Path + "</b>");
        sb.Append("</td></tr>");

        // Request.RawUrl
        sb.Append("<tr><td>");
        sb.Append("Request.RawUrl");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.RawUrl + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.AbsolutePath
        sb.Append("<tr><td>");
        sb.Append("Request.Url.AbsolutePath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.AbsolutePath + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.AbsoluteUri
        sb.Append("<tr><td>");
        sb.Append("Request.Url.AbsoluteUri");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.AbsoluteUri + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Scheme
        sb.Append("<tr><td>");
        sb.Append("Request.Url.Scheme");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.Scheme + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Host
        sb.Append("<tr><td>");
        sb.Append("Request.Url.Host");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.Host + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Port
        sb.Append("<tr><td>");
        sb.Append("Request.Url.Port");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.Port + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Authority
        sb.Append("<tr><td>");
        sb.Append("Request.Url.Authority");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.Authority + "</b>");
        sb.Append("</td></tr>");

        // local Request.Url.LocalPath
        sb.Append("<tr><td>");
        sb.Append("Request.Url.LocalPath");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.LocalPath + "</b>");
        sb.Append("</td></tr>");

        // Request.PathInfo
        sb.Append("<tr><td>");
        sb.Append("Request.PathInfo");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.PathInfo + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.PathAndQuery
        sb.Append("<tr><td>");
        sb.Append("Request.Url.PathAndQuery");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.PathAndQuery + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Query
        sb.Append("<tr><td>");
        sb.Append("Request.Url.Query");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.Query + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Fragment
        // 原則上你應該無法從 Request.Url.Fragment 取得任何資料,因為通常 Browser 不會送出 #toc 這個部分
        sb.Append("<tr><td>");
        sb.Append("Request.Url.Fragment");
        sb.Append("</td><td>");
        sb.Append("<b>" + Request.Url.Fragment + "</b>");
        sb.Append("</td></tr>");

        // Request.Url.Segments
        sb.Append("<tr>");
        sb.Append("<td>");
        sb.Append("Request.Url.Segments");
        sb.Append("</td>");
        sb.Append("<td>");
        string[] segments = Request.Url.Segments;
        foreach (string s in segments)
        {
            sb.Append("<b>" + s + "</b>");
            sb.Append("<br/>");
        }
        sb.Append("</td>");
        sb.Append("</tr>");

        sb.Append("</table>");

        ltlTable.Text = sb.ToString();
    }

目录
相关文章
|
缓存 前端开发 JavaScript
【前端用法】jquery获取当前页面的URL信息
【前端用法】jquery获取当前页面的URL信息
95 0
【shiro】关于shiro匹配URL的小用法
今天涉及到这个地方 1.登录请求需要带着username和password一起过去,这样的话发出的请求就是:http://localhost:8080/wxSecond/welcome/login.htmls?username=123&password=123 而shiro的配置中,还在担忧仅仅配置/welcome/login.
1033 0
IIS7 URL Rewrite 用法实例
原文: IIS7 URL Rewrite 用法实例 很友好的URL地址,使访问的人很容易记住。要求你的用户记住“ http://www.contoso.com/article.aspx?id=342&title=URL-Rewrite-Walkthrough” 这样的网址并不是件很美妙的事。
1117 0
|
BI C#
报表文本字段钻取使用超链接(URL)的用法 (转)
推荐文章: 1.在RDLC报表中添加链接 (http://www.cnblogs.com/linyechengwei/archive/2011/02/24/1963874.html) 2.在ReportViewer中使用超链接(HyperLink) (http://www.
882 0
|
3月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
58 0
|
4月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
4月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
51 0
|
5月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
302 0