Saya memiliki keyakinan bahwa markup harus tetap dalam mark-up dan bukan pada kode di belakang.
Saya datang ke situasi di mana saya pikir itu dapat diterima untuk membangun HTML dalam kode di belakang. Saya ingin memiliki beberapa konsensus tentang apa praktik terbaik atau seharusnya.
Kapan bisa membangun html dalam kode di belakang? Apa metode terbaik untuk membuat html ini? (contoh: Strings, StringBuilder, HTMLWriter, dll)
Jawaban:
Apakah menggunakan sesuatu seperti Razor tidak berlaku di sini? Karena jika Anda melakukan banyak pembuatan html menggunakan mesin tampilan dapat membuatnya jauh lebih mudah. Itu juga dibangun untuk digunakan di luar ASP.NET.
Namun terkadang itu bukan yang Anda butuhkan. Sudahkah Anda mempertimbangkan untuk menggunakan kelas TagBuilder yang merupakan bagian dari .net (mvc)? Ada juga HtmlWriter di System.Web.UI (untuk formulir web). Saya akan merekomendasikan salah satunya jika Anda membuat
Controls
atauHtml Helpers
.sumber
Saya akan menggunakan Paket Agility Html untuk merakit HTML dan kemudian menulisnya ke file teks.
Banyak jam kerja digunakan untuk membuat Html Agility Pack kuat dan
HTML-compliantHTML-ramah.Saya pikir itu bahkan termasuk contoh aplikasi yang menghasilkan HTML.
Dari beranda:
sumber
Saya akan menggunakan htmltag untuk membuat HTML.
Contoh:
Dan kemudian CSQuery jika saya ingin mem-parsing HTML
Contoh:
sumber
Tentu saja ada perpustakaan di luar sana, seperti HTML Agility Pack yang dapat membantu Anda dalam upaya ini.
Jika Anda benar-benar tidak ingin menggunakan perpustakaan yang ada, dan ingin kode sederhana, turun-dan-kotor, saya suka ide untuk mengabstraksi beberapa perilaku seperti jawaban sebelumnya. Saya juga menyukai gagasan menggunakan StringBuilder yang mendasarinya, sebagai lawan dari string karena beberapa alasan:
Jika saya tidak membutuhkan mesin HTML yang direkayasa secara besar-besaran, saya akan membangun antarmuka yang sederhana dan intuitif
sumber
Jika Anda akhirnya hanya menggunakan string, jangan lupa untuk melepaskan semua karakter yang disediakan HTML dalam data output Anda.
Saya sarankan menggunakan kelas HTML-aware atau perpustakaan daripada bekerja secara langsung dengan string. HTMLWriter terlihat seperti awal yang bagus.
sumber
Hampir dua tahun setelah posting asli - ini adalah solusi yang telah bekerja dengan baik untuk saya. Dalam dokumen target saya menempatkan yang berikut ini:
fungsi yang dipanggil terlihat seperti ini:
Dan output yang dihasilkan di browser seperti yang diharapkan:
Jumlahnya adalah: 0
Jumlahnya adalah: 1
Jumlahnya: 2
Jumlahnya yang: 3
Jumlahnya yang: 4
Ketika saya pergi untuk melihat sumber saya menemukan yang berikut:
sumber
MENYALA!
Saya mungkin akan downvoted untuk ini, tetapi sebagai mantan desainer yang harus men-tweak HTML dalam kode sebelum saya benar-benar tahu banyak tentang. NET, kode di atas adalah cara yang lebih mudah untuk dipahami daripada metode yang abstrak pembuatan HTML. Jika Anda berpikir seorang desainer mungkin harus mengubah HTML Anda, gunakan string sederhana seperti ini.
Sesuatu yang saya lihat banyak devs lewatkan ketika mereka menulis HTML dalam kode adalah bahwa dalam HTML, tanda kutip tunggal atau ganda diperbolehkan untuk atribut. Jadi, alih-alih menghindari semua tanda kutip dalam kode (yang terlihat aneh sekali bagi yang tidak diinisiasi), gunakan saja tanda kutip tunggal untuk kutipan html di dalam string Anda.
BAIK. Semua pembenci string yang berangkai adalah perwakilan saya. Inilah cara yang 'tepat' untuk melakukan ini tanpa penggabungan string, tetapi saya berpendapat bahwa setiap halaman normal dengan tabel normal tidak akan menghadirkan masalah kinerja di luar skala konyol seperti Google:
sumber
+=
di dalam loop dengan cara ini tidak berskala sama sekali; karena string tidak dapat diubah, Anda membuat string baru setiap kali melakukannya. GunakanStringBuilder
saja.If you think a designer might ever have to tweak your HTML, use simple strings like this.
yang sulit dimengerti? Beberapa orang mendefinisikan kode mengerikan adalah yang membeli kinerja milidetik dengan biaya beberapa detik untuk memahami sepenuhnya. Jelas ketika Anda mengantisipasi kode Anda dilihat atau dikelola oleh penyebut umum terendah individu, kasus ini dapat dipastikan bahwa menulis kode yang lebih mudah dipahami atau diubah selalu lebih baik daripada kode paling bersih atau berkinerja terbaik.