原文: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. Shell编程速查手册

    https://blog.atime.me/note/shell-scripting-summary.html 总结一下日常Shell脚本里常用的知识,忘记时方便查阅. 常见的shell 常见的Lin ...

  2. ios的手势操作之UIGestureRecognizer浅析

    转载地址:http://blog.csdn.net/likendsl/article/details/7554150 每一个手势的实现例子,可参考下面网址:http://www.cnblogs.com ...

  3. js鼠标事件

    今天遇到一个非常奇怪而又搞笑的事情:给一个a标签添加一个鼠标移动上时给一个事件,我给其添加的是一个onMouseMove事件,结果在IE6 7 8 9和GOOLE中都很正常,结果在Firox中出现问题 ...

  4. LDAP7卸载

    3 Uninstalling Directory Server Enterprise Edition This chapter provides instructions for uninstalli ...

  5. RHEL7重置root密码

    一.rd.break方法 在linux16那一段的最后,空一格输入rd.break 按Ctrl+启动到单用户模式,如下: 进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=r ...

  6. iptables学习笔记

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3812510.html ...

  7. 传统的log4j实战

    /** * */ package log4j; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator ...

  8. LaTeX 中插入数学公式

    一.常用的数学符号 1.小写希腊字母 \alpha \nu \beta \xi \gamma o \delta \pi \epsilon \rho \zeta \sigma \eta \tau \th ...

  9. Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务

    1.BootCompletedReceiver.Java文件 public class BootCompletedReceiver extends BroadcastReceiver { @Overr ...

  10. one way WebService

    WSDL支持4种消息交换方式:   1)单向(One-way):服务端接收消息:   2)请求响应(Request-response):服务端点接收请求消息,然后发送响应消息:   3)要求应答(So ...