Saya punya URL seperti ini:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Saya ingin mendapatkannya http://www.example.com/mypage.aspx.
Bisakah Anda memberi tahu saya bagaimana saya bisa mendapatkannya?
Saya punya URL seperti ini:
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
Saya ingin mendapatkannya http://www.example.com/mypage.aspx.
Bisakah Anda memberi tahu saya bagaimana saya bisa mendapatkannya?
Jawaban:
Kamu bisa memakai 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);
Atau bisa Anda gunakan substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
EDIT: Memodifikasi solusi pertama untuk mencerminkan saran brillyfresh di komentar.
substringMetode akan memberikan kesalahan jika tidak ada string kueri. Gunakan string path = url.Substring(0, url.IndexOf("?") > 0? url.IndexOf("?") : url.Length);sebagai gantinya.
Inilah solusi yang lebih sederhana:
var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = uri.GetLeftPart(UriPartial.Path);
Dipinjam dari sini: Memotong String Kueri & Mengembalikan URL Bersih C # ASP.net
return Request.Url.GetLeftPart(UriPartial.Path);
uri.GetComponent(adalah metode hebat lainnya untuk mendapatkan bagian dari Uri. Saya tidak tahu tentang keduanya sampai sekarang!
Request.RawUrl.Split(new[] {'?'})[0];
RawUrlakan mendapatkan URL sebelum penulisan ulang URL, jadi mungkin gunakan AbsoluteUri? Request.Url.AbsoluteUri.Split('?')[0]
Jawaban yang bagus juga ditemukan di sini sebagai sumber jawaban
Request.Url.GetLeftPart(UriPartial.Path)
Jalanku:
new UriBuilder(url) { Query = string.Empty }.ToString()
atau
new UriBuilder(url) { Query = string.Empty }.Uri
Uri.GetLeftPart. Versi terbaru dari NET Core (1.1) harus memiliki metode itu (tidak dapat mengkonfirmasi karena saya tidak menggunakan net core 1.1 untuk saat ini)
Anda dapat menggunakan Request.Url.AbsolutePathuntuk mendapatkan nama halaman, dan Request.Url.Authorityuntuk nama host dan porta. Saya tidak percaya ada properti bawaan untuk memberikan apa yang Anda inginkan, tetapi Anda dapat menggabungkannya sendiri.
Split () Variasi
Saya hanya ingin menambahkan variasi ini untuk referensi. Url sering berupa string sehingga lebih mudah menggunakan Split()metode ini daripada Uri.GetLeftPart(). Dan Split()juga dapat dibuat untuk bekerja dengan nilai relatif, kosong, dan nol sedangkan Uri melempar pengecualian. Selain itu, Url juga dapat berisi hash seperti/report.pdf#page=10 (yang membuka pdf di halaman tertentu).
Metode berikut berkaitan dengan semua jenis Url ini:
var path = (url ?? "").Split('?', '#')[0];
Contoh Output:
http: //domain/page.html#page=2 ---> http: //domain/page.html
page.html ---> page.html
Inilah metode ekstensi menggunakan jawaban @ Kolman. Sedikit lebih mudah untuk mengingat untuk menggunakan Path () daripada GetLeftPart. Anda mungkin ingin mengubah nama Path menjadi GetPath, setidaknya sampai mereka menambahkan properti ekstensi ke C #.
Pemakaian:
Uri uri = new Uri("http://www.somewhere.com?param1=foo¶m2=bar");
string path = uri.Path();
Kelas:
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);
}
}
}
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.split('?')[0];
System.Uri.GetComponents, hanya komponen tertentu yang Anda inginkan.
Uri uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
uri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped);
Keluaran:
http://www.example.com/mypage.aspx
Request.RawUrl.Split('?')[0]
Hanya untuk nama url saja !!
Saya telah membuat ekstensi sederhana, karena beberapa jawaban lain melempar pengecualian nol jika tidak ada yang QueryStringmemulai dengan:
public static string TrimQueryString(this string source)
{
if (string.IsNullOrEmpty(source))
return source;
var hasQueryString = source.IndexOf('?') != -1;
if (!hasQueryString)
return source;
var result = source.Substring(0, source.IndexOf('?'));
return result;
}
Pemakaian:
var url = Request.Url?.AbsoluteUri.TrimQueryString()
var canonicallink = Request.Url.Scheme + "://" + Request.Url.Authority + Request.Url.AbsolutePath.ToString();
Coba ini:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
dari ini: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye Anda akan mendapatkan ini: mypage.aspx
this.Request.RawUrl.Substring(0, this.Request.RawUrl.IndexOf('?'))