Tôi có một URL như sau:Nhận url mà không chuỗi truy vấn
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Tôi muốn nhận http://www.example.com/mypage.aspx
từ nó.
Bạn có thể cho tôi biết cách tôi có thể nhận được không?
Tôi có một URL như sau:Nhận url mà không chuỗi truy vấn
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Tôi muốn nhận http://www.example.com/mypage.aspx
từ nó.
Bạn có thể cho tôi biết cách tôi có thể nhận được không?
Bạn có thể sử dụng 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);
Hoặc bạn có thể sử dụng substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
EDIT: Sửa đổi giải pháp đầu tiên để phản ánh đề nghị brillyfresh của trong các ý kiến.
Bạn có thể sử dụng Request.Url.AbsolutePath
để lấy tên trang và Request.Url.Authority
cho tên máy chủ và cổng. Tôi không tin rằng có một tài sản được xây dựng trong để cung cấp cho bạn chính xác những gì bạn muốn, nhưng bạn có thể kết hợp chúng mình.
Nó được đem lại cho tôi /mypage.aspx, không phải những gì tôi muốn. –
Dưới đây là một giải pháp đơn giản hơn:
var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);
vay từ đây: Truncating Query String & Returning Clean URL C# ASP.net
Request.RawUrl.Split(new[] {'?'})[0];
Đơn giản và làm việc với các url không có "?" – rkawano
Tôi thích điều này chỉ vì thực tế bạn có thể sử dụng nó mà không cần đầy đủ uri – KingOfHypocrites
Đây là giải pháp của tôi:
Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty);
Điều này sẽ gây ra lỗi nếu không có chuỗi truy vấn –
cách của tôi:
new UriBuilder(url) { Query = string.Empty }.ToString()
hoặc
new UriBuilder(url) { Query = string.Empty }.Uri
Đây là những gì tôi sử dụng cho dự án NET Core 1.0 vì nó không phương thức 'Uri.GetLeftPart' Phiên bản mới nhất của NET Core (1.1) nên có phương thức đó (không thể xác nhận vì tôi không ở trên lõi mạng 1.1 hiện tại) – psulek
Tôi thích cái này vì xây dựng URI chính xác là cái mà UriBuilder làm. Tất cả các câu trả lời khác là (tốt) hack. –
Dưới đây là một phương pháp khuyến nông sử dụng @ câu trả lời Kolman của. Nó dễ nhớ hơn khi sử dụng Path() so với GetLeftPart. Bạn có thể muốn đổi tên Đường dẫn thành GetPath, ít nhất là cho đến khi chúng thêm thuộc tính mở rộng vào C#.
Cách sử dụng:
Uri uri = new Uri("http://www.somewhere.com?param1=foo¶m2=bar");
string path = uri.Path();
Lớp:
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]
Chỉ cần cho chỉ tên url !!
Hãy thử điều này:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
từ này: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye bạn sẽ có được điều này: MyPage.aspx
this.Request.RawUrl.Substring (0, this.Request.RawUrl.IndexOf ('?'))
Tốt câu trả lời cũng tìm thấy ở đây source of answer
Request.Url.GetLeftPart(UriPartial.Path)
Giải pháp cho Silverlight:
string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
url.AbsolutePath chỉ trả về phần đường dẫn của URL (/mypage.aspx); url thêm vào trước.Scheme (http) + Uri.SchemeDelimiter (: //) + url.Authority (www.somesite.com) cho URL đầy đủ mà bạn muốn – Ryan
Phương thức Uri.GetLeftPart đơn giản hơn như đã đề cập http://stackoverflow.com/câu hỏi/1188096/cắt ngắn-truy vấn-chuỗi-quay-sạch-url-c-sắc nét-asp-net/1188180 # 1188180 –