天天看點

Url解析

Url解析

URL即:統一資源定位符 (Uniform Resource Locator, URL)

完整的URL由這幾個部分構成:

scheme://host:port/path?query#fragment

scheme:通信協定

常用的http,ftp,maito等

host:主機

伺服器(計算機)域名系統 (DNS) 主機名或 IP 位址。

port:端口号

整數,可選,省略時使用方案的預設端口,如http的預設端口為80。

path:路徑

由零或多個"/"符号隔開的字元串,一般用來表示主機上的一個目錄或檔案位址。

query:查詢

可選,用于給動态網頁(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技術制作的網頁)傳遞參數,可有多個參數,用"&"符号隔開,每個參數的名和值用"="符号隔開。

fragment:資訊片斷

字元串,用于指定網絡資源中的片斷。例如一個網頁中有多個名詞解釋,可使用fragment直接定位到某一名詞解釋。(也稱為錨點.)

對于這樣一個URL

http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere

我們可以用javascript獲得其中的各個部分

1, window.location.href

整個URl字元串(在浏覽器中就是完整的位址欄)

本例傳回值: http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere

2,window.location.protocol

URL 的協定部分

本例傳回值:http:

3,window.location.host

URL 的主機部分

本例傳回值:www.x2y2.com

4,window.location.port

URL 的端口部分

如果采用預設的80端口(update:即使添加了:80),那麼傳回值并不是預設的80而是空字元

本例傳回值:""

5,window.location.pathname

URL 的路徑部分(就是檔案位址)

本例傳回值:/fisker/post/0703/window.location.html

6,window.location.search

查詢(參數)部分

除了給動态語言指派以外,我們同樣可以給靜态頁面,并使用javascript來獲得相信應的參數值

本例傳回值:?ver=1.0&id=6

7,window.location.hash

錨點

本例傳回值:#imhere

URL的擷取很簡單,ASP.NET通用:

【1】擷取 完整url (協定名+域名+虛拟目錄名+檔案名+參數)

string url=Request.Url.ToString();

【2】擷取 虛拟目錄名+頁面名+參數:

string url=Request.RawUrl;

(或 string url=Request.Url.PathAndQuery;)

【3】擷取 虛拟目錄名+頁面名:

string url=HttpContext.Current.Request.Url.AbsolutePath;

(或 string url= HttpContext.Current.Request.Path;)

【4】擷取 域名:

string url=HttpContext.Current.Request.Url.Host;

【5】擷取 參數:

string url= HttpContext.Current.Request.Url.Query;

【6】擷取 端口:

Request.Url.Port

二、目前controller、action的擷取

RouteData.Route.GetRouteData(this.HttpContext).Values["controller"]

RouteData.Route.GetRouteData(this.HttpContext).Values["action"]

RouteData.Values["controller"]

RouteData.Values["action"]

如果在視圖中可以用

ViewContext.RouteData.Route.GetRouteData(this.Context).Values["controller"]

ViewContext.RouteData.Route.GetRouteData(this.Context).Values["action"]

ViewContext.RouteData.Values["controller"]

ViewContext.RouteData.Values["action"]