获取url,而不querystring
我有这样的url:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
我想从中获取http://www.example.com/mypage.aspx
。
你能告诉我怎样才能得到它?
你可以使用System.Uri
Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"); string path = String.Format("{0}{1}{2}{3}", url.Scheme, Uri.SchemeDelimiter, url.Authority, url.AbsolutePath);
或者你可以使用substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"; string path = url.Substring(0, url.IndexOf("?"));
编辑:修改第一个解决scheme,以反映brillyfresh在评论中的build议。
这是一个更简单的解决scheme:
var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"); string path = uri.GetLeftPart(UriPartial.Path);
从这里借用: 截断查询string和返回干净的URL C#ASP.net
这是我的解决scheme:
Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty);
Request.RawUrl.Split(new[] {'?'})[0];
在这里也find了很好的答案来源
Request.Url.GetLeftPart(UriPartial.Path)
我的方式:
new UriBuilder(url) { Query = string.Empty }.ToString()
要么
new UriBuilder(url) { Query = string.Empty }.Uri
您可以使用Request.Url.AbsolutePath
获取页面名称,并使用Request.Url.Authority
作为主机名和端口。 我不相信有一个内置的财产给你你想要的东西,但你可以把它们自己结合起来。
这是一个使用@ Kolman的答案的扩展方法。 记住使用Path()比GetLeftPart稍微容易一些。 您可能希望将path重命名为GetPath,至less在将扩展属性添加到C#之前。
用法:
Uri uri = new Uri("http://www.somewhere.com?param1=foo¶m2=bar"); string path = uri.Path();
class上:
using System; namespace YourProject.Extensions { public static class UriExtensions { public static string Path(this Uri uri) { if (uri == null) { throw new ArgumentNullException("uri"); } return uri.GetLeftPart(UriPartial.Path); } } }
Request.RawUrl.Split( '?')[0]
只为url名称!
Silverlight解决scheme:
string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
尝试这个:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
从这个: http ://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye你会得到这个:mypage.aspx
this.Request.RawUrl.Substring(0,this.Request.RawUrl.IndexOf('?'))