我们在开发网页应用程式,时常需要去解析网址(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 的网址相关的属性与用法:
Response.Redirect(Request.RawUrl)中
Request.RawUrl表示当前页面,获取当前请求的原始 URL。定向到本身,但是又不想写url
Response.Redirect重新打开页面。
| 网址: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&g
石家庄网站建设的优点:我们是专属定制,制作符合您公司业务、风格的网站,这就做到给您制作的网站是网络上独一无二的网站,这样更有利于搜索引擎的收录。如果您喜欢网络上某个风格的网站或者网站模板,我们是只仿制而不直接套用,我们会对其中的结构和样式做增减优化,做…
竞价排名营销是一种通过 竞价购买搜索引擎中关键词或关键短语的广告方式。竞价排名营销分为两种类型。 第一种,直接为真正的搜索引擎结果的排名付费,也就是说付的钱越多,网页所获得的排名名也就越高。 第二种则更类似于普通的广告。这种竞价排名营销方式通过…
网站优化对网站来说是非常重要的,直接决定和影响着网站所起到的作用,以及在各个地方当中的排名。在进行seo优化的过程中,我们必须要坚持一定的原则,真正的把这些事情做得更好,才可以确保最终的结果,这对于我们来说是非常重要的事。 SEO优化主要分为8小步: …