Bagaimana saya bisa menambahkan ampersand untuk nilai dalam nilai file konfigurasi aplikasi ASP.net/C#

209

Saya punya program C # dengan nilai dalam file konfigurasi. Yang saya inginkan adalah menyimpan ampersand untuk nilai url seperti ...

<appSettings>
  <add key="myurl" value="http://www.myurl.com?&cid=&sid="/>
</appSettings>

Tapi saya mendapatkan kesalahan saat membangun situs saya. Ampersand tidak diizinkan. Saya sudah mencoba berbagai bentuk melarikan diri dari ampersands tetapi tidak berhasil. Adakah yang tahu bentuk yang benar untuk melakukan ini? Semua saran dipersilahkan.

Rob Segal
sumber

Jawaban:

420

Gunakan " &amp;" alih-alih "&".

Eric Rosenberger
sumber
2
Saya serius berpikir saya sudah mencoba ini. Saya rasa saya ketinggalan jejak ";" pada akhirnya. Bagaimanapun itu berhasil, terima kasih atas umpan balik Eric.
Rob Segal
6
Ini berfungsi, tetapi saya harus meletakkan string. Ganti ("& amp;", "&") di mana pun saya mengakses pengaturan ini, atau browser tidak akan mendeteksi dengan benar ketika Anda mengklik tautan: /
DLeh
Yah ... itu cukup mengecewakan. Maksud saya, bahwa ConfigurationManager tidak secara otomatis membatalkan penghapusan & xyl; karakter saat mendapatkannya dari file konfigurasi.
Efrain
@Efrain tidak yakin apa yang dibicarakan DLeh dengan tepat, tetapi unescape jelas bekerja dengan baik. Baru saja menguji ini dengan bagian standar appSettingsdan kustom NameValueCollection: ampersand tidak terhapus dengan benar pada keduanya.
julealgon
@DLeh Jika Anda bekerja dengan ViewBag dalam file .cshtml Anda perlu memanggil Html.Rawfile .cshtml Anda untuk mencegahnya lolos dari framework.
user700390
25

Sudahkah Anda mencoba ini?

<appSettings>  
  <add key="myurl" value="http://www.myurl.com?&amp;cid=&amp;sid="/>
<appSettings>
BenAlabaster
sumber
0

Meskipun jawaban yang diterima di sini benar secara teknis, tampaknya ada beberapa kebingungan di antara pengguna berdasarkan komentar. Saat bekerja dengan ViewBag dalam file .cshtml, Anda harus menggunakan @Html.Rawsebaliknya data Anda, setelah tidak terhapus oleh ConfigurationManager, akan kembali diloloskan kembali. Gunakan Html.Raw()untuk mencegah hal ini terjadi.

user700390
sumber