原文: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();

    }

Request.url用法的更多相关文章

  1. ASP.NET取得Request URL的各个部分

    我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷.例如說 "http://localhost:1897/News/Press/Content.as ...

  2. nodejs request模块用法

    request是服务端发起请求的工具包 1.安装 npm i request 2.基本用法 默认是GET请求 var request = require('request'); request('您的 ...

  3. ASP.NET中Request.RawUrl、Request.Url的区别

    如果访问的地址是: http://hovertree.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu 那么 ...

  4. Request.url请求路径的一些属性

    Request.url请求路径的一些属性1,Request.UrlReferrer.AbsolutePath=获取URL的绝对路径例:"/Manager/Module/OfficialMan ...

  5. Request.IsLocal与Request.Url.IsLoopback的区别

    均在服务器上访问时: http://localhost:17810 Request.IsLocal => trueRequest.Url.IsLoopback => true http:/ ...

  6. css cursor url用法格式详解

    css cursor url用法格式:css:{cursor:url('图标路径'),auto;} //IE,FF,chrome浏览器都可以 实例代码:html{cursor: url("h ...

  7. 转载 ASP.NET中如何取得Request URL的各个部分

    转载原地址 http://blog.miniasp.com/post/2008/02/10/How-Do-I-Get-Paths-and-URL-fragments-from-the-HttpRequ ...

  8. Request url 各种属性值

    網址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc Request.ApplicationPath / Request.Phys ...

  9. Asp.net中Request.Url的各个属性对应的意义介绍

    Asp.net中Request.Url的各个属性对应的意义介绍 本文转载自 http://www.jb51.net/article/30254.htm 网络上关于Request.Url的说明已经很多也 ...

随机推荐

  1. [io PWA] Great libraries and tools for great Progressive Web Apps

    sw-toolbox: Github It provides a cononical implementation of all the runtime caching strategies that ...

  2. Nubia Z5S(高通公司MSM8974) QHSUSB_BULK砖的方法节省模式(随着win7在恢复recovery分区案例)

    Nubia Z5S在某些异常情况或按组合键进入QHSUSB_BULK状态, 这种模式的现象, 猜想windows(实例win7)即使在数据线, 它会出现在计算机n载,甚至会提示要格式化某些分区(这里要 ...

  3. [转] 函数编程之闭包漫谈(Closure)

    在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...

  4. common-lang——StringUtils

    1.文字省略处理 最多显示几个字 StringUtils.abbreviate("中华人民共和国", 5); // output:中华.. 2.文字中间省略 最多显示几个字符 St ...

  5. iOS 数据持久化(2):SQLite3

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  6. 详细分析Orchard的Content、Drivers, Shapes and Placement 类型

    本文原文来自:http://skywalkersoftwaredevelopment.net/blog/a-closer-look-at-content-types-drivers-shapes-an ...

  7. linux,安装软件报错cannot create regular file '/usr/local/man/man1': No such file or directory

    make install时报错,如下 install: cannot create regular file '/usr/local/man/man1': No such file or direct ...

  8. Android 官方新手指导教程

    一.开始 1.建立第一个应用程序 依赖关系和先决条件 Android SDK ADT Plugin 20.0.0 或更高 (如果你使用eclipse的话) 欢迎来到Android应用程序开发! 这一节 ...

  9. 从ActionFilterAttribute向view传送数据

    [原文转载]http://www.cnblogs.com/QLeelulu/archive/2008/08/17/1269599.html 原文地址:ASP.NET MVC Tip #31 – Pas ...

  10. ssh框架配置事务管理器

    http://blog.163.com/zsq303288862@126/blog/static/9374596120111182446727/