<% $, <% @, <% =, <% # …ข้อตกลงคืออะไร?


211

ฉันได้โปรแกรมทั้ง ASP คลาสสิกและ ASP.NET และฉันเห็นแท็กต่าง ๆ ภายในมาร์กอัปสำหรับโค้ดฝั่งเซิร์ฟเวอร์

ฉันเพิ่งเจอบล็อกที่ดีใน MSDNที่ไปกว่าความแตกต่างระหว่าง:

  • <%= (เปอร์เซ็นต์พร้อมเครื่องหมายเท่ากับ) และ
  • <%# (เครื่องหมายเปอร์เซ็นต์และ hash / ปอนด์ / octothorpe)

( <%#ประเมินเฉพาะที่ databind และ<%=ประเมินที่เรนเดอร์) แต่ฉันก็เห็น:

  • <%$ (เครื่องหมายเปอร์เซ็นต์และดอลลาร์) และ
  • <%@ (เครื่องหมายเปอร์เซ็นต์และที่สัญลักษณ์)

ฉันเชื่อว่า<%@โหลดสิ่งต่าง ๆ เช่นชุดประกอบและอาจ<%$โหลดจากไฟล์กำหนดค่าหรือไม่ ฉันก็ไม่แน่ใจเหมือนกัน

ฉันแค่สงสัยว่าถ้าใครสามารถอธิบายทั้งหมดนี้ให้ฉันและอาจอธิบายได้ว่าทำไมมันเป็นสิ่งสำคัญในการสร้างแท็กต่าง ๆ มากมายที่ดูเหมือนว่ามีจุดประสงค์ที่คล้ายกัน?


72
ฉันดีใจที่คุณถามเพราะมันเป็นเรื่องยากมากที่จะ google;)
นิโคลัส Dorier

8
เป็นไปไม่ได้กับ Google!
jdbosley

<%#มักจะใช้กับeval, แต่มันไม่จำเป็นต้อง: คุณสามารถใช้มันเพื่อรันโค้ดด้านเซิร์ฟเวอร์ใด ๆ , โดยที่คุณต้องรันPage.DataBind()บนเพจที่มีหรือเพจต้นแบบ. มันดูเหมือนว่านี้เป็นตัวเลือกเดียวของคุณในกรณีที่คุณต้องการที่จะ "ฉีด" รหัสด้านเซิร์ฟเวอร์เข้าไปในลักษณะของการควบคุมด้านเซิร์ฟเวอร์เช่น<asp:TextBox, หรือแม้กระทั่ง<asp:LinkButton <input runat="server">
Gilad Barner

1
@jdbosley ฉัน googled "<%=" "<%:""<%@" "<%#"และส่งฉันมาที่นี่
Rudey

2
@RuudLenders โชคดีสำหรับคุณและ Google เป็นคนดี ในปี 2014 การค้นหาแท็กเหล่านั้นไม่ได้ผลลัพธ์ที่มีคุณภาพดี
jdbosley

คำตอบ:


296

ฉันเดาว่าเป็นเพราะเป็นคำตอบที่ยอมรับได้ แต่พยายามแก้ไข / w ลิงก์ไม่ทำงาน นี่คือลิงค์ที่ฉันพยายามใส่เกี่ยวกับการประเมินการแสดงออก "<% $": msdn.microsoft.com/en-us/library/d5bd1tad.aspx
John MacIntyre

6
มีชื่อสำหรับสิ่งเหล่านี้หรือไม่? สิ่งเหล่านี้เรียกว่าเป็นกลุ่ม?
Vippy

9
@Vippy พวกเขาจะเรียกผึ้ง
เอียนบอยด์

1
@Lankymart การใช้งานเร็วที่สุดที่ฉันสามารถหาได้คือเดือนกันยายน 2008
Ian Boyd

1
@Vippy MS เรียกพวกเขาบล็อกรหัสฝังตัว "Bee stings" เป็นคำที่ไม่เป็นทางการ
shiggity

5

คุณได้ครอบคลุม 2 รายการ (<% # จะถูกประเมินที่ databind เท่านั้นและ <% = จะถูกประเมินที่เรนเดอร์) และคำตอบสำหรับ " <%@" คือคำสั่งของคอมไพเลอร์ (เช่น. สิ่งที่คุณใส่ไว้ บรรทัดคำสั่งของคอมไพเลอร์)

ฉันไม่รู้เกี่ยวกับ " <%$"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.