2010-09-16 35 views
5

Sự khác biệt trong các thẻ này là gì?Biểu thức mã ASP.NET, Ràng buộc dữ liệu và các Expressoins tuyên bố khác

<% <% # <% = <% $

Quan trọng hơn, làm thế nào để hiển thị một tài sản trang sử dụng cú pháp khai báo trong một điều khiển ASP.NET? Tôi đang cố gắng để làm điều này trong một điều khiển ASP.NET. Nhiệm vụ là để thiết lập văn bản của một nhãn nhưng tôi không muốn làm điều này chuyên nghiệp ngữ pháp trong trường hợp tôi muốn thay đổi kiểm soát đầu ra. Tôi gặp lỗi về điều khiển phía máy chủ không thể chứa cú pháp này. Tôi không chắc chắn rằng tôi cần một điều khiển databound cho những gì tôi muốn làm nhưng đó là một lựa chọn khác.

Câu trả lời một phần sắp tới.

Cập nhật Có một thẻ mới tôi đã thấy trong ASP.NET 4.5? trang web

<%:

Trả lời

9

câu trả lời phần

trích dẫn từ Mike Banavige

<%%> Một khối mã nhúng là mã máy chủ mà thực hiện trong thời gian render giai đoạn các trang. Mã trong khối có thể thực hiện các câu lệnh lập trình và chức năng gọi trong lớp trang hiện tại . http://msdn2.microsoft.com/en-gb/library/ms178135(vs.80).aspx

<% =%> hữu ích nhất khi hiển thị một phần thông tin. http://msdn2.microsoft.com/en-us/library/6dwsdcf5(VS.71).aspx

<% #%> Cú pháp biểu thức ràng buộc dữ liệu. http://msdn2.microsoft.com/en-us/library/bda9bbfx.aspx

<% $%> Biểu thức ASP.NET. http://msdn2.microsoft.com/en-us/library/d5bd1tad.aspx

<% @%> Cú pháp chỉ thị. http://msdn2.microsoft.com/en-us/library/xz702w3e(VS.80).aspx

<% - -%> Nhận xét phía máy chủ. http://msdn2.microsoft.com/en-US/library/4acf8afk.aspx

Cập nhật:

Okay này dường như làm việc

<asp:Label ID="MyLabel" runat="server" Text='<%# MyProperty%>'></asp:Label> 

Nếu tôi sử dụng cú pháp eval sau đó tôi nhận được một lỗi về điều khiển databound hoặc tôi sử dụng <% sau đó tôi nhận được một lỗi điều khiển phía máy chủ. Bất kỳ màu nào được đánh giá cao .. không chắc tôi thực sự hiểu những gì đang xảy ra.

Có lẽ nó có liên quan đến pha hiển thị.

ít hơn quan sát:

tôi có thể sử dụng <% = không databinding và nhận được giá trị tài sản nhưng không thể sử dụng nó trong một máy chủ kiểm soát bên mà không nhận lỗi.

Nếu tôi sử dụng <% # trong điều khiển phía máy chủ nhưng tôi bắt buộc phải thực hiện Page.Databind.

Điều thú vị là tôi có thể sử dụng <% = hoặc <% # khi tôi muốn hiển thị văn bản không nằm trong điều khiển. Mặc dù sau này yêu cầu databinding.

mới <%: cú pháp được giải thích, cũng được gọi là mã biểu hiện cú pháp

Với ASP.NET 4, chúng tôi đang giới thiệu một cú pháp biểu hiện mã mới (<%: %>) mà ám output như < % =%> khối thực hiện - nhưng cũng tự động mã hóa mã HTML trước khi thực hiện.

http://weblogs.asp.net/scottgu/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2

+0

Bíp khác: Thẻ <%# %> phải là giá trị duy nhất trong thuộc tính của thẻ asp.net. ví dụ, bạn không thể có ... Text = "$ <% # x.Amount%>" ... Nó sẽ phải ... Văn bản = "<% #" $ "+ x.Amount%> "... – David

0

Không, điều khiển server-side không thể. Ví dụ, tôi có một thuộc tính chuỗi có tên SkinPath cung cấp cho tôi đường dẫn App_Themes đầy đủ đến chủ đề hiện tại. Tôi sử dụng nó theo cách sau:

<img src='<%= SkinPath %>/Images/myImage.png' /> 

Tuy nhiên, sau đây không làm việc:

<asp:Image ID='image' runat='server' ImageUrl='<%= SkinPath %>/Images/myImage.png' /> 

Thay vào đó, nó ám chỉ rằng srcnghĩa đen trong kết quả <img>.

+0

Tôi đã cập nhật câu trả lời của mình. Tôi có thể sử dụng <% # và nó hoạt động để databind đến một thuộc tính. Bạn có giải thích thêm vì sao <% không hoạt động? Có phải vì cách bước kết xuất hoạt động không? –

+0

Curtis, tôi có lỗi đánh máy: Tôi nên đặt <% = SkinPath%> và không, tôi không có bất kỳ lý do nào cho việc này. Tôi nhớ lại một dự án trước khi tôi gặp lỗi đã được giải quyết bằng cách thay đổi tất cả <% = thành <% #. Một số điều bạn dành thời gian để tìm ra. Lần khác, bạn hoàn thành công việc và được trả tiền. :) – Brad

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