Các thẻ đặc biệt ASP.NET ASP.NET


232

Tên chính thức của các thẻ ASP.NET "đặc biệt" như thế này là gì:

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

Tôi dường như không thể tìm ra tên khái niệm hoặc nổi tiếng cho những cái này, vì vậy tôi gặp khó khăn khi tìm kiếm thêm thông tin. Như một phần thưởng, bất cứ ai cũng có thể cho tôi một bản tóm tắt nhanh chóng về tất cả các "thẻ đặc biệt" có thể và mỗi thứ trong số chúng làm gì (hoặc chỉ cho tôi một tài nguyên)?


1
Microsoft cũng gọi chúng là Khối mã nhúng nếu chúng chứa mã.
Robert Harvey

Câu trả lời:


350

Tên chính thức là " dấu phân cách kịch bản phía máy chủ " hoặc " biểu thức nội tuyến ASP.NET ". Hộp thoại cài đặt tô sáng cú pháp của Visual Studio 2008 gọi các "Tập lệnh phía máy chủ HTML" này. Những người Microsoft gọi họ là "mã cố định" trong blog của họ.

  • <%@ %>là một Chỉ thị cho các trang web ASP.NET . Được sử dụng cho các trang và điều khiển để định cấu hình cài đặt trình biên dịch trang / điều khiển ( <%@ Control Inherits="MyParentControl" %>).
    • <%@ %>cũng là một Chỉ thị ứng dụng . Được sử dụng để chỉ định cài đặt dành riêng cho ứng dụng cho global.asax. Khác biệt với các chỉ thị trang vì nó chỉ sử dụng một bộ thẻ khác.
  • <% %>Khối kết xuất mã (đối với mã nội tuyến) . Một trong 4 hình thức của Khối mã nhúng . Được sử dụng để đưa mã phía máy chủ vào Render()phương thức ( <% x = x + 1; %>) của lớp được tạo. Định dạng: đơn / đa dòng hoặc nhiều liên kết (ví dụ if/then/elsexen kẽ với html) nhưng không thể được sử dụng để khai báo các hàm.
  • <%= %>là một khối kết xuất mã (cho các biểu thức nội tuyến) . Được sử dụng như một cách viết tắt cho<%Response.Write(value)%>
  • <%: %>(không chính thức là " Khối mã hóa Html ") giống như trước đây, nhưng đầu ra được mã hóa HTML.
  • <%# %>là một biểu thức ràng buộc dữ liệu . Sử dụng cho một chiều (chỉ đọc) hoặc hai chiều (updateable) ràng buộc qua Eval, Xpath, Bind, hoặc biểu thức (ví dụ giá trị được lựa chọn của một điều khiển thả xuống). Liên kết các biểu thức với các thuộc tính điều khiển ràng buộc dữ liệu thông qua đánh dấu thuộc tính của điều khiển hoặc dưới dạng một thẻ riêng biệt tạo ra một DataBoundLiteralControlthể hiện với giá trị trên thuộc tính của nó Text. Biểu thức được đánh giá bởi một bộ DataBindingxử lý sự kiện cho điều khiển.
  • <%#: %>là một biểu thức liên kết dữ liệu được mã hóa HTML (mới trong ASP.NET 4.5). Nó kết hợp các chức năng của <%# %><%: %>.
  • <%$ %>là một trình tạo biểu thức ASP.NET . Được sử dụng để liên kết biểu thức thời gian chạy cho các thuộc tính điều khiển thông qua các thuộc tính thẻ máy chủ. Được sử dụng với AppSettings, ConnectionStringshoặc Resources(hoặc tiện ích mở rộng tùy chỉnh của riêng bạn , ví dụ để sử dụng các thuộc tính phía sau mã). Các bài tập này được thêm vào OnInit()phương thức của lớp được tạo.
  • <%-- --%>là một bình luận phía máy chủ . Được sử dụng để loại trừ nội dung khỏi quá trình biên dịch (và do đó sẽ tạo ra lỗi nếu điều khiển nhận xét được đề cập trong mã phía sau). Không giống như các bình luận html, nội dung sẽ không được đưa vào đầu ra.
  • <!-- #Include ... -->là một Chỉ thị phía máy chủ . Được sử dụng để chèn nội dung của tệp vào trang, tệp điều khiển hoặc tệp chung. Hữu ích khi kiểm soát người dùng quá mức cần thiết và có thể sử dụng trang chính.

Ngoài ra còn có Khối khai báo mã , mẫu Khối mã nhúng cuối cùng.

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

Điều này được sử dụng để bao gồm các thành viên bổ sung (phương thức, v.v.) cho lớp được tạo từ đánh dấu ASP.NET. Chúng chỉ được cung cấp "chủ yếu để duy trì khả năng tương thích ngược với công nghệ ASP cũ" và không được khuyến nghị sử dụng.


1
Tôi tin rằng có <% $ ...%> cơ sở dữ liệu dựa trên chuỗi cài đặt / chuỗi kết nối.
sisve

Tôi chưa nghe nói về điều đó. Bạn có một nguồn?
Sedat Kapanoglu

3
Chúng được gọi là biểu thức ASP.NET. Xem msdn.microsoft.com/en-us/l
Library / d5bd1tad.aspx

7

Không có câu trả lời cho câu hỏi tên của bạn, nhưng trang "Cú pháp trang ASP.NET" của MSDN khá tốt (hay đúng hơn, đó là trang cấp cao nhất; các trang bên dưới cung cấp thêm thông tin).

EDIT: Trước đây tôi đã nghĩ rằng <%# ... %>không có trong danh sách, nhưng tất nhiên, đó là, dưới Biểu thức ràng buộc dữ liệu. Doh.


Liên kết này hiện không hoạt động. Bạn phải chọn một phiên bản .NET framework trước khi thực hiện.
Sam

1
@Sam: Ah, cảm ơn - Tôi nghĩ rằng nó đã bị loại bỏ khi .NET 4.5 xuất hiện, vì một số lý do. Tôi đã chỉnh sửa liên kết.
Jon Skeet

1
Tôi nghĩ Jon Skeet đã không phát triển web ...!
CodeArtist

6

Tôi luôn thấy trang QuickStart này rất hữu ích, bất cứ khi nào tôi nghi ngờ về cú pháp phía Máy chủ. Nó chi tiết 8 phong cách đánh dấu khác nhau và cung cấp các ví dụ minh họa cho từng kiểu, ngoài việc giải thích các ưu và nhược điểm.

Tuy nhiên, nó không đề cập đến chỉ thị cấp Trang, mà IIRC được nêu chi tiết ở những nơi khác trong Quickstart.

Tất nhiên, điều này có liên quan đến ASP.NET 2.0.


Đây là một câu trả lời chỉ liên kết. Xin nội dung thông tin liên quan.
zzzzBov

1
liên kết đã cũ :-(
Roland


6

Đôi khi, những người Microsoft gọi chúng là "cốm" hoặc "cốm mã".


0

Tôi cũng đã nghe những thứ được gọi là "V stings", kể cả trên Podcast StackOverflow.

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.