获取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.PhysicalPathD:\Projects\Solution\web\News\Press\Content.aspx
System.IO.Path.GetDirectoryName(Request.PhysicalPath)D:\Projects\Solution\web\News\Press
Request.PhysicalApplicationPathD:\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.AbsoluteUrihttp://localhost:1897/News/Press/Content.aspx/123?id=1
Request.Url.Schemehttp
Request.Url.Hostlocalhost
Request.Url.Port1897
Request.Url.Authoritylocalhost: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("/", "") 不是又短又直觉吗? ^_^

 以下是产生以上表格的代码:

 

ExpandedBlockStart.gif 代码
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 " );
    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();
}

 

 

 

 

转载于:https://www.cnblogs.com/simonfan/articles/1943239.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值