2012-08-08 44 views
5

Reading Code Generation and T4 Text Templates là gì và tôi thấy cú pháp này < # = DateTime.Now #>ý nghĩa của <#= #>

<html><body> 
The date and time now is: <#= DateTime.Now #> 
</body></html> 

Làm thế nào là nó khác với <%= DateTime.Now %> hoặc <%# DateTime.Now %>.

tìm kiếm Google cho thấy không có gì

+0

xem qua tài liệu, nó có tất cả cú pháp của '<% %> '. Rất giống nhau. – codingbiz

+0

Trong quá trình tạo văn bản T4 <# = DateTime.Now #> được đánh giá và kết quả được ghi vào đầu ra. AFAIK <%= %> có nghĩa là không có gì đối với Động cơ T4 và chỉ được viết như vậy. – FuleSnabel

+0

@ FuleSnabel Tôi không biết sự khác biệt, tôi mới đến T4, tôi nghĩ đó là một cách khác để viết biểu thức là asp.net. Chỉ là lạ với tôi – codingbiz

Trả lời

4

Tôi không thể khẳng định được thực sự quen thuộc với các mẫu văn bản T4, nhưng nó xuất hiện sự khác biệt là giữa thiết kế/xây dựng hệ mã thời gian (có thể bao gồm báo cáo thực thi) và thực thi mã runtime .

Vì vậy, <#= #> đánh giá biểu thức trong mẫu được sử dụng để tạo tệp.

<%= %> thực thi mã trong khối và viết mã đó vào luồng đầu ra. Điều này sẽ được JIT biên dịch khi trang được thực hiện lần đầu tiên, nhưng vấn đề là nó biểu thị một khối mã để thực thi khi trang chạy, không phải trong quá trình tạo một tệp mẫu.

Biểu mẫu thứ ba, <%# %> biểu thị biểu thức dữ liệu, cũng được đánh giá khi trang thực thi.

khối điều khiển biểu

Một khối điều khiển biểu hiện toán một biểu thức và chuyển đổi nó để một chuỗi. Điều này được chèn vào tập tin đầu ra.

khối điều khiển biểu được delimted bởi những biểu tượng < # = ... #>

Ví dụ, khối điều khiển sau sẽ khiến cho các tập tin đầu ra để chứa "5":

<#= 2 + 3 #>

Nguồn: http://msdn.microsoft.com/en-us/library/bb126478

+0

Ý của bạn là '<#= 2 + 3 #> 'giống với' <%= 2 + 3 %>'? – codingbiz

+2

Kết quả cuối cùng trong đầu ra là như nhau, nhưng việc đánh giá diễn ra vào các thời điểm khác nhau. '<# = 2 + 3' sẽ thực hiện khi bạn tạo một tệp, do đó tệp được tạo của bạn sẽ có" 5 "trong đó. '<% = 2 + 3' sẽ thực hiện khi bạn chạy một trang ASP.Net. –

+0

Ví dụ, nó sẽ là sự khác biệt giữa chèn một dấu thời gian khi mã được xây dựng so với đánh giá ngày hiện tại mỗi lần trang được thực hiện. –

Các vấn đề liên quan