Tag “spesial” ASP.NET

232

Apa nama resmi untuk tag ASP.NET "khusus" seperti ini:

<%# %>
<%= %>
<%@ %>
<%$ %>

Saya tidak dapat menemukan nama konseptual atau terkenal untuk ini, jadi saya kesulitan mencari info lebih lanjut. Sebagai bonus, adakah yang bisa memberi saya rundown cepat dari semua "tag khusus" yang mungkin dan apa yang masing-masing dari mereka lakukan (atau arahkan saya ke sumber daya)?

Andy White
sumber
1
Microsoft juga menyebutnya Blok Kode Tertanam jika mengandung kode.
Robert Harvey

Jawaban:

350

Nama resmi adalah " pembatas skrip sisi server " atau " ASP.NET inline expressions ". Dialog pengaturan penyorotan sintaksis Visual Studio 2008 menyebut ini "HTML Server-Side Script". Orang-orang Microsoft menyebutnya "kode nugget" di blog mereka.

  • <%@ %>adalah Arahan untuk Halaman Web ASP.NET . Digunakan untuk halaman dan kontrol untuk mengonfigurasi pengaturan kompiler halaman / kontrol ( <%@ Control Inherits="MyParentControl" %>).
    • <%@ %>juga merupakan Petunjuk Aplikasi . Digunakan untuk menentukan pengaturan khusus aplikasi untuk global.asax. Berbeda dari arahan halaman karena hanya menggunakan set tag yang berbeda.
  • <% %>adalah Blok Render Kode (untuk kode sebaris) . Salah satu dari 4 bentuk Blok Kode Tertanam . Digunakan untuk penyertaan kode sisi server ke Render()metode ( <% x = x + 1; %>) dari kelas yang dihasilkan. Format: tunggal / multiline atau banyak tautan (mis. if/then/elseDiselingi dengan html) tetapi tidak dapat digunakan untuk mendeklarasikan fungsi.
  • <%= %>adalah Blok Render Kode (untuk ekspresi sebaris) . Digunakan sebagai singkatan untuk<%Response.Write(value)%>
  • <%: %>(secara tidak resmi " Blok Kode Pengodean Html ") sama dengan sebelumnya, tetapi hasilnya adalah HTML yang dikodekan.
  • <%# %>adalah Ekspresi Pengikatan Data . Digunakan untuk satu arah (readonly) atau dua arah (diupdate) yang mengikat melalui Eval, Xpath, Bind, atau ekspresi (misalnya nilai yang dipilih dari kontrol drop-down). Mengikat ekspresi ke properti kontrol terikat data melalui markup atribut kontrol, atau sebagai tag terpisah yang menghasilkan DataBoundLiteralControlinstance dengan nilai pada Textpropertinya. Ekspresi dievaluasi oleh DataBindingpengendali acara untuk kontrol.
  • <%#: %>adalah Ekspresi Binding Data Dikodekan HTML (baru dalam ASP.NET 4.5). Ini menggabungkan fungsi <%# %>dan <%: %>.
  • <%$ %> adalah ekspresi ASP.NET . Digunakan untuk pengikatan ekspresi runtime untuk properti kontrol melalui atribut tag server. Digunakan dengan AppSettings,, ConnectionStringsatau Resources(atau ekstensi kustom Anda sendiri , misalnya untuk menggunakan properti di belakang kode). Tugas-tugas ini ditambahkan ke OnInit()metode kelas yang dihasilkan.
  • <%-- --%>adalah Komentar Sisi-Server . Digunakan untuk mengecualikan konten dari kompilasi (dan juga akan menghasilkan kesalahan jika kontrol berkomentar disebut dalam kode-belakang). Tidak seperti komentar html, konten tidak akan dimasukkan dalam output.
  • <!-- #Include ... -->adalah Petunjuk Sertakan Sisi Server . Digunakan untuk menyisipkan konten file ke halaman, kontrol atau file global. Berguna di mana kontrol pengguna berlebihan, dan halaman master tidak dapat digunakan.

Ada juga a Blok Deklarasi Kode , formulir Blok Kode Embedded final.

<script runat="server">
bool IsTrue() {
  return false;
}
</script>

Ini digunakan untuk menyertakan anggota tambahan (metode dll.) Ke kelas yang dihasilkan dari markup ASP.NET. Ini hanya pernah diberikan "terutama untuk menjaga kompatibilitas dengan teknologi ASP yang lebih lama" dan tidak direkomendasikan untuk digunakan.

Andy Brown
sumber
1
Saya percaya ada <% $ ...%> yang mem-databind terhadap pengaturan aplikasi / koneksi.
sisve
Saya belum pernah mendengarnya. Apakah anda memiliki sumber?
Sedat Kapanoglu
3
Mereka disebut ASP.NET Expressions. Lihat msdn.microsoft.com/en-us/library/d5bd1tad.aspx
elo80ka
7

Tidak ada jawaban untuk pertanyaan nama Anda, tetapi halaman "ASP.NET Page Syntax" MSDN cukup bagus (atau lebih tepatnya, itu adalah halaman tingkat atas; halaman di bawahnya memberikan informasi lebih lanjut).

EDIT: Saya sebelumnya berpikir bahwa <%# ... %>itu tidak termasuk dalam daftar, tapi tentu saja, di bawah Ekspresi Binding Data. Doh.

Jon Skeet
sumber
Tautan ini saat ini tidak berfungsi. Anda harus memilih versi .NET framework sebelum melakukannya.
Sam
1
@ Sam: Ah, terima kasih - saya pikir itu sudah pensiun ketika .NET 4.5 keluar, untuk beberapa alasan. Saya telah mengedit tautannya.
Jon Skeet
1
Saya pikir Jon Skeet tidak melakukan pengembangan web ...!
CodeArtist
6

Saya selalu menemukan halaman QuickStart ini sangat berguna, setiap kali saya ragu tentang sintaks sisi-Server. Ini merinci 8 gaya markup yang berbeda dan memberikan contoh ilustrasi masing-masing, di samping menjelaskan pro dan kontra.

Itu tidak menyebutkan arahan tingkat halaman, yang IIRC dirinci di tempat lain di Quickstart.

Tentu saja, ini relevan dengan ASP.NET 2.0.

Cerebrus
sumber
Ini hanya jawaban tautan. Harap sebaris informasi yang relevan.
zzzzBov
1
tautannya basi :-(
Roland
6

Orang-orang Microsoft kadang-kadang menyebutnya "nugget" atau "nugget kode".

Matth
sumber
0

Saya juga pernah mendengar ini disebut "sengatan V," termasuk di StackOverflow Podcast.

Chris Moschini
sumber