<% $, <% @, <% =, <% # Sự thỏa thuận là gì?


211

Tôi đã lập trình trong cả ASP và ASP.NET cổ điển và tôi thấy các thẻ khác nhau bên trong đánh dấu cho mã phía máy chủ.

Gần đây tôi đã bắt gặp một blog tốt về MSDN có sự khác biệt giữa:

  • <%= (tỷ lệ phần trăm cùng với dấu bằng) và
  • <%# (dấu phần trăm và hàm băm / pound / octothorpe)

(chỉ <%#được đánh giá tại databind và <%=được đánh giá khi kết xuất), nhưng tôi cũng thấy:

  • <%$ (phần trăm và ký hiệu đô la) và
  • <%@ (ký hiệu phần trăm và ký hiệu).

Tôi tin rằng <%@tải những thứ như tập hợp và có lẽ <%$tải những thứ từ tập tin cấu hình? Tôi không chắc lắm.

Tôi chỉ tự hỏi liệu có ai có thể làm rõ tất cả những điều này cho tôi không và có thể giải thích tại sao điều quan trọng là tạo ra nhiều thẻ khác nhau dường như có cùng mục đích không?


72
Tôi rất vui khi bạn hỏi, bởi vì nó rất khó để google;)
Nicolas Dorier

8
Không thể với Google!
jdbosley

<%#thường được sử dụng với eval, nhưng nó không phải: bạn có thể sử dụng nó để chạy bất kỳ mã phía máy chủ nào, miễn là bạn chạy Page.DataBind()trên trang chứa hoặc trang chính của nó. Có vẻ như đây là tùy chọn duy nhất của bạn trong trường hợp bạn muốn "tiêm" mã phía máy chủ vào các thuộc tính của các điều khiển phía máy chủ <asp:TextBox, <asp:LinkButtonhoặc thậm chí là a <input runat="server">.
Gilad Barner

1
@jdbosley Tôi đã googled "<%=" "<%:""<%@" "<%#"và nó đã gửi tôi ở đây.
Rudey

2
@RuudLender, may mắn cho bạn và Google làm tốt công việc. Trong năm 2014, việc tìm kiếm các thẻ đó không mang lại kết quả chất lượng tốt.
jdbosley

Câu trả lời:


296

Tôi đoán đó là vì đó là một câu trả lời được chấp nhận, nhưng cố gắng chỉnh sửa / w liên kết không hoạt động. đây là liên kết tôi đã thử đưa vào đánh giá biểu thức "<% $": msdn.microsoft.com/en-us/l Library / d5bd1tad.aspx
John MacIntyre

6
Có một tên cho tất cả những điều này? Những gì được gọi là một nhóm?
Vippy

9
@Vippy Chúng được gọi là ong đốt .
Ian Boyd

1
@Lankymart Sử dụng sớm nhất tôi có thể tìm thấy là tháng 9 năm 2008
Ian Boyd

1
@Vippy MS gọi chúng là các khối mã nhúng "Bee stings" là một thuật ngữ không chính thức.
shiggity

5

Bạn đã bao gồm 2 trong số đó (<% # chỉ được đánh giá tại cơ sở dữ liệu và <% = được đánh giá khi kết xuất) và câu trả lời cho " <%@" là đó là các chỉ thị của trình biên dịch (ví dụ: những thứ như những gì bạn đưa vào một dòng lệnh của compiler).

Tôi không biết về " <%$".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.