<% $, <% @, <% =, <% # ... apa masalahnya?

211

Saya telah memprogram dalam ASP dan ASP.NET klasik, dan saya melihat tag berbeda di dalam markup untuk kode sisi server.

Saya baru-baru ini menemukan blog yang bagus di MSDN yang membahas perbedaan antara:

  • <%= (persentase bersama dengan tanda sama dengan) dan
  • <%# (tanda persen dan hash / pound / octothorpe)

( <%#dievaluasi hanya pada databind, dan <%=dievaluasi saat render), tetapi saya juga melihat:

  • <%$ (tanda persen dan dolar) dan
  • <%@ (tanda persen dan pada simbol).

Saya percaya <%@banyak hal seperti rakitan dan mungkin <%$memuat banyak hal dari file konfigurasi? Saya tidak terlalu yakin.

Saya hanya ingin tahu apakah ada yang bisa mengklarifikasi semua ini untuk saya dan mungkin menjelaskan mengapa penting untuk membuat begitu banyak tag berbeda yang tampaknya memiliki tujuan yang sama?

Harun
sumber
72
Saya senang Anda bertanya, karena sangat sulit untuk google;)
Nicolas Dorier
8
Tidak mungkin untuk Google!
jdbosley
<%#sering digunakan dengan eval, tetapi tidak harus: Anda dapat menggunakannya untuk menjalankan kode sisi server apa pun, asalkan Anda berjalan Page.DataBind()pada halaman yang berisi atau halaman masternya. Tampaknya ini adalah satu-satunya pilihan Anda jika Anda ingin "menyuntikkan" kode sisi server ke atribut kontrol sisi server seperti <asp:TextBox, <asp:LinkButtonatau bahkan a <input runat="server">.
Gilad Barner
1
@ jdbosley saya mencari di Google "<%=" "<%:""<%@" "<%#"dan mengirim saya ke sini.
Rudey
2
@RuudLenders, beruntung untuk Anda dan Google pekerjaan yang baik. Pada 2014 mencari tag-tag itu tidak menghasilkan hasil yang berkualitas baik.
jdbosley

Jawaban:

296
Jose Basilio
sumber
Saya kira itu karena itu adalah jawaban yang diterima, tetapi mencoba mengedit / w tautan tidak berfungsi. inilah tautan yang saya coba masukkan tentang evaluasi ekspresi "<% $": msdn.microsoft.com/en-us/library/d5bd1tad.aspx
John MacIntyre
6
Apakah ada nama untuk semua ini? Apa yang disebut sebagai kelompok?
Vippy
9
@ Vippy Mereka disebut sengatan lebah .
Ian Boyd
1
@Lankymart Penggunaan awal yang dapat saya temukan adalah September 2008
Ian Boyd
1
@Vippy MS menyebut mereka Blok kode tertanam "Sengatan lebah" adalah istilah yang tidak resmi.
shiggity
5

Anda telah membahas 2 di antaranya (<% # dievaluasi hanya di databind, dan <% = dievaluasi saat render), dan jawaban untuk " <%@" adalah bahwa itu adalah arahan kompiler (mis., Hal-hal seperti apa yang Anda pakai baris perintah kompiler).

Saya tidak tahu tentang " <%$".

Michael Burr
sumber