แท็ก ASP.NET "พิเศษ"


232

ชื่ออย่างเป็นทางการสำหรับแท็ก ASP.NET "พิเศษ" เช่นนี้คืออะไร:

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

ฉันดูเหมือนจะไม่สามารถเข้าใจชื่อที่เป็นแนวคิดหรือเป็นที่รู้จักสำหรับสิ่งเหล่านี้ดังนั้นฉันจึงมีปัญหาในการค้นหาข้อมูลเพิ่มเติม เป็นโบนัสทุกคนสามารถให้ฉัน "rundown" แท็กพิเศษ "ทั้งหมดที่เป็นไปได้อย่างรวดเร็วและสิ่งที่แต่ละคนทำ (หรือชี้ให้ฉันไปที่ทรัพยากร)


1
Microsoft จะเรียกพวกมันว่าEmbedded Code Blocksหากมีรหัสอยู่
Robert Harvey

คำตอบ:


350

ชื่ออย่างเป็นทางการคือ " ตัวคั่นสคริปต์ฝั่งเซิร์ฟเวอร์ " หรือ " นิพจน์แบบอินไลน์ ASP.NET " กล่องโต้ตอบการเน้นการตั้งค่าทางไวยากรณ์ของ Visual Studio 2008 เรียก "สคริปต์ฝั่งเซิร์ฟเวอร์ HTML" เหล่านี้ พวกไมโครซอฟท์เรียกพวกเขาว่า "นักเก็ตโค้ด" ในบล็อกของพวกเขา

  • <%@ %>เป็นคำสั่งสำหรับหน้าเว็บ ASP.NET ใช้สำหรับหน้าและตัวควบคุมเพื่อกำหนดการตั้งค่าหน้า / ตัวควบคุมคอมไพเลอร์ ( <%@ Control Inherits="MyParentControl" %>)
    • <%@ %>นอกจากนี้ยังเป็นแอพลิเคชัน Directive ใช้เพื่อระบุการตั้งค่าเฉพาะแอปพลิเคชันสำหรับ global.asax แตกต่างจากคำสั่งของหน้าเว็บเนื่องจากใช้ชุดแท็กที่ต่างกันเท่านั้น
  • <% %>เป็นรหัส Render บล็อก (รหัสแบบอินไลน์) หนึ่งใน 4 รูปแบบของการฝังตัวบล็อกรหัส ใช้สำหรับการรวมรหัสฝั่งเซิร์ฟเวอร์กับRender()เมธอด ( <% x = x + 1; %>) ของคลาสที่สร้างขึ้น รูปแบบ: single / multiline หรือ multi-linked (เช่นif/then/elseinterspersed ด้วย html) แต่ไม่สามารถใช้เพื่อประกาศฟังก์ชั่น
  • <%= %>เป็นรหัส Render บล็อก (นิพจน์แบบอินไลน์) ใช้เป็นชวเลขสำหรับ<%Response.Write(value)%>
  • <%: %>(อย่างไม่เป็นทางการ " บล็อกรหัสการเข้ารหัส Html ") เหมือนกับก่อนหน้านี้ แต่ผลลัพธ์จะถูกเข้ารหัส HTML
  • <%# %>เป็นข้อมูลการแสดงออกที่มีผลผูกพัน ใช้สำหรับทางเดียว (อ่านอย่างเดียว) หรือแบบสองทาง (อัปเดต) มีผลผูกพันผ่านEval, Xpath, Bindหรือการแสดงออก (เช่นค่าที่เลือกของหล่นลงควบคุม) เชื่อมโยงนิพจน์กับคุณสมบัติการควบคุมที่ผูกกับข้อมูลผ่านมาร์กอัปแอตทริบิวต์ของตัวควบคุมหรือเป็นแท็กแยกต่างหากซึ่งสร้างDataBoundLiteralControlอินสแตนซ์ที่มีค่าในTextคุณสมบัติ นิพจน์ได้รับการประเมินโดยDataBindingตัวจัดการเหตุการณ์สำหรับตัวควบคุม
  • <%#: %>เป็นนิพจน์ที่ผูกมัดข้อมูลที่เข้ารหัส HTML (ใหม่ใน ASP.NET 4.5) มันรวมการทำงานของและ<%# %><%: %>
  • <%$ %>เป็นตัวสร้างนิพจน์ ASP.NET ใช้สำหรับการรวมนิพจน์รันไทม์สำหรับคุณสมบัติการควบคุมผ่านแอตทริบิวต์แท็กเซิร์ฟเวอร์ ใช้กับAppSettings, ConnectionStringsหรือResources(หรือส่วนขยายที่กำหนดเองของคุณเองเช่นเพื่อใช้คุณสมบัติ behind รหัส) การมอบหมายเหล่านี้จะถูกเพิ่มเข้าไปในOnInit()วิธีการเรียนที่สร้างขึ้น
  • <%-- --%>เป็นความคิดเห็นที่ฝั่งเซิร์ฟเวอร์ ใช้เพื่อแยกเนื้อหาออกจากการคอมไพล์ (และจะสร้างข้อผิดพลาดหากการควบคุมการคอมเม้นท์อ้างถึงในโค้ด - หลัง) ซึ่งแตกต่างจากความคิดเห็น html เนื้อหาจะไม่รวมอยู่ในผลลัพธ์
  • <!-- #Include ... -->เป็นฝั่งเซิร์ฟเวอร์รวม Directive ใช้เพื่อแทรกเนื้อหาของไฟล์ลงในหน้าควบคุมหรือไฟล์ทั่วโลก มีประโยชน์ในกรณีที่การควบคุมผู้ใช้มากเกินไปและไม่สามารถใช้หน้าต้นแบบได้

นอกจากนี้ยังมีBlock Declaration Codeซึ่งเป็นรูปแบบ Block Code สุดท้ายที่ถูกฝังไว้

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

สิ่งนี้ใช้เพื่อรวมสมาชิกเพิ่มเติม (วิธีการอื่น ๆ ) ไปยังคลาสที่สร้างจากมาร์กอัป ASP.NET สิ่งเหล่านี้ได้รับการจัดทำขึ้น"เพื่อรักษาความเข้ากันได้ย้อนหลังกับเทคโนโลยี ASP รุ่นเก่า"และไม่แนะนำให้ใช้


1
ฉันเชื่อว่ามี <% $ ... %> ที่ฐานข้อมูลกับสายการตั้งค่า / การเชื่อมต่อ
sisve

ฉันไม่เคยได้ยินเรื่องนั้น คุณมีแหล่งที่มาหรือไม่?
Sedat Kapanoglu

3
พวกเขาเรียกว่า ASP.NET Expressions ดูmsdn.microsoft.com/en-us/library/d5bd1tad.aspx
elo80ka

7

ไม่มีคำตอบสำหรับคำถามชื่อของคุณ แต่หน้า MSDN "ASP.NET Page Syntax"ค่อนข้างดี (หรือค่อนข้างเป็นหน้าระดับบนสุดหน้าเว็บที่อยู่ใต้นั้นให้ข้อมูลเพิ่มเติม)

แก้ไข: ฉันเคยคิด<%# ... %>ว่าไม่ได้รวมอยู่ในรายการ แต่แน่นอนว่าอยู่ภายใต้นิพจน์การผูกข้อมูล Doh


ลิงก์นี้ไม่สามารถใช้งานได้ในขณะนี้ คุณต้องเลือก. NET Framework เวอร์ชันก่อนที่จะทำ
Sam

1
@ แซม: อ่าขอบคุณ - ฉันคิดว่ามันเลิกใช้แล้วเมื่อ. NET 4.5 ออกมาด้วยเหตุผลบางอย่าง ฉันแก้ไขลิงค์แล้ว
Jon Skeet

1
ฉันคิดว่า Jon Skeet ไม่ได้ทำการพัฒนาเว็บไซต์ ... !
CodeArtist

6

ฉันพบหน้า QuickStart นี้เสมอว่ามีประโยชน์มากทุกครั้งที่ฉันมีข้อสงสัยเกี่ยวกับไวยากรณ์ฝั่งเซิร์ฟเวอร์ มันมีรายละเอียด 8 รูปแบบมาร์กอัปที่แตกต่างกันและแสดงตัวอย่างของแต่ละรูปแบบนอกเหนือจากการอธิบายข้อดีข้อเสีย

ไม่ได้กล่าวถึงคำสั่งระดับหน้าแม้ว่า IIRC ใดจะมีรายละเอียดที่อื่นใน Quickstart

แน่นอนว่าสิ่งนี้เกี่ยวข้องกับ ASP.NET 2.0


นี่คือคำตอบสำหรับลิงค์เท่านั้น กรุณากรอกข้อมูลที่เกี่ยวข้อง
zzzzBov

1
ลิงก์เก่า :-(
Roland


6

พวกไมโครซอฟท์เรียกพวกเขาว่า "นักเก็ต" หรือ "นักเก็ตโค้ด" บางครั้ง


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