Saya diberi URI absolut yang berisi string kueri. Saya ingin menambahkan nilai ke string kueri dengan aman, dan mengubah parameter yang ada.
Saya lebih suka untuk tidak &foo=bar
menggunakan, atau menggunakan ekspresi reguler, pelolosan URI itu rumit. Sebaliknya saya ingin menggunakan mekanisme built-in yang saya tahu akan melakukan ini dengan benar dan menangani pelarian.
Saya telah menemukan sebuah ton dari jawaban bahwa semua penggunaan HttpUtility
. Namun ini menjadi ASP.NET Core, tidak ada lagi perakitan System.Web lagi, jadi tidak ada lagi HttpUtility
.
Apa cara yang tepat untuk melakukan ini di ASP.NET Core sambil menargetkan runtime inti?
c#
asp.net
asp.net-core
vcsjones.dll
sumber
sumber
Microsoft.AspNet.WebUtilties
mungkinMono.HttpUtility
perpustakaan .HttpUtility
danParseQueryString
metode.Jawaban:
Jika Anda menggunakan ASP.NET Inti 1 atau 2, Anda dapat melakukan ini dengan
Microsoft.AspNetCore.WebUtilities.QueryHelpers
di Microsoft.AspNetCore.WebUtilities paket.Jika Anda menggunakan ASP.NET Core 3.0 atau yang lebih baru,
WebUtilities
sekarang menjadi bagian dari ASP.NET SDK dan tidak memerlukan referensi paket nuget terpisah.Untuk menguraikannya menjadi kamus:
Perhatikan bahwa tidak seperti
ParseQueryString
di System.Web, ini mengembalikan jenis kamusIDictionary<string, string[]>
di ASP.NET Core 1.x, atauIDictionary<string, StringValues>
di ASP.NET Core 2.x atau lebih tinggi, jadi nilainya adalah kumpulan string. Beginilah cara kamus menangani beberapa parameter string kueri dengan nama yang sama.Jika Anda ingin menambahkan parameter ke string kueri, Anda dapat menggunakan metode lain di
QueryHelpers
:Menggunakan .net core 2.2 Anda bisa mendapatkan string kueri menggunakan
Anda akan mendapatkan kumpulan pasangan kunci: nilai - seperti ini
sumber
Microsoft.AspNetCore.WebUtilities
.Cara termudah dan paling intuitif untuk mengambil URI absolut dan memanipulasi string kuerinya hanya menggunakan paket ASP.NET Core, dapat dilakukan dalam beberapa langkah mudah:
Instal Paket
PM> Instal-Paket Microsoft.AspNetCore.WebUtilities
PM> Instal-Paket Microsoft.AspNetCore.Http.Extensions
Kelas Penting
Hanya untuk menunjukkannya, berikut adalah dua kelas penting yang akan kita gunakan: QueryHelpers , StringValues , QueryBuilder .
Kode
Untuk tetap mengetahui perubahan apa pun, Anda dapat melihat posting blog saya tentang ini di sini: http://benjii.me/2017/04/parse-modify-query-strings-asp-net-core/
sumber
HttpRequest
memilikiQuery
properti yang mengekspos string kueri yang diurai melaluiIReadableStringCollection
antarmuka:Diskusi di GitHub ini juga menunjukkannya.
sumber
Fungsi ini kembali
Dictionary<string, string>
dan tidak digunakanMicrosoft.xxx
untuk kompatibilitasMenerima pengkodean parameter di kedua sisi
Menerima kunci duplikat (kembalikan nilai terakhir)
sumber
Penting untuk dicatat bahwa pada waktu karena jawaban teratas telah ditandai sebagai benar yang
Microsoft.AspNetCore.WebUtilities
memiliki pembaruan versi utama (dari 1.xx ke 2.xx).Karena itu, jika Anda membangunnya,
netcoreapp1.1
Anda perlu menjalankan perintah berikut, yang menginstal versi terbaru yang didukung1.1.2
:Install-Package Microsoft.AspNetCore.WebUtilities -Version 1.1.2
sumber
Saya menggunakan ini sebagai metode ekstensi, bekerja dengan sejumlah parameter:
Tautan berikutnya dan sebelumnya misalnya dalam tampilan:
sumber