原文: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. iOS开发中关于UIImage的知识点总结

    UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...

  3. Eclipse / Android : “Errors running builder 'Android Pre Compiler' on project…”

    Errors occurred during the build. Errors running builder 'Android Resource Manager' on project 'hell ...

  4. Java多线程编程<一>

    怎样做到线程安全? 1.不要跨线程共享变量: 2.使状态变量为不可变的: 3.或者在任何访问状态变量的时候使用同步 同步synchronized //静态的synchronized方法从Class对象 ...

  5. Python开发【第二十二篇】:Web框架之Django【进阶】

    Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...

  6. sql知识点的积累和使用过的例子

    越来越发现自己的sql方面的知识的欠缺,所以只能放低姿态一点一点的学了 一 游标和charIndex的使用. 游标我一直没用过,以前只是在同事们写的存储过程里见过,但是一直没看明白(可是我就是比较笨吧 ...

  7. A除以B_2

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格 ...

  8. [转]一个备份MySQL数据库的简单Shell脚本

    本文翻译自 iSystemAdmin 的 <A Simple Shell Script to Backup MySQL Database> Shell脚本是我们写不同类型命令的一种脚本,这 ...

  9. gulp-htmlmin可以压缩html的gulp插件

    通过一条命令用Npm安装gulp-htmlmin: npm install gulp-htmlmin --save-dev 安装完毕后,打开gulpfile.js文件,我们里面编写一个task用来专门 ...

  10. 1. mybatis批量插入数据

    通过list <insert id="saveByList" useGeneratedKeys="true" parameterType="ja ...