2010-05-24 21 views
5

Tình cờ tôi tìm thấy this post về một tính năng mới trong ASP.NET 4.0: Biểu thức được đính kèm trong các dấu ngoặc đơn <%: Content %> này sẽ được hiển thị dưới dạng mã HTML.<%: %> ngoặc vuông cho Mã hóa HTML trong ASP.NET 4.0

Tôi đã thử này trong vòng một nhãn databound trong một FormView như vậy:

<asp:Label ID="MyLabel" runat="server" Text='<%: Eval("MyTextProperty") %>' /> 

Nhưng nó không hoạt động: Thuộc tính văn bản chứa các thẻ script (để thử nghiệm), nhưng sản lượng là trống. Sử dụng cách truyền thống hoạt động:

<asp:Label ID="MyLabel" runat="server" 
    Text='<%# HttpUtility.HtmlEncode(Eval("MyTextProperty")) %>' /> 

Tôi đang làm gì sai?

(Trên sidenote: Tôi quá ngu ngốc để tìm bất kỳ thông tin nào: Google từ chối tìm kiếm điều đó. Trợ giúp trực tuyến của VS2010 trên MSDN cung cấp nhiều lượt truy cập, nhưng không có liên quan gì đến tìm kiếm của tôi. Tôi không biết làm thế nào những "điều" (các dấu ngoặc tôi có nghĩa là) được chính thức gọi là có một cụm từ tìm kiếm tốt hơn.)

Bất kỳ thông tin và liên kết bổ sung và nguồn lực đều được chào đón!

Cảm ơn trước!

+0

Kiểm tra tính cơ bản 1: khi bạn thực hiện "nguồn xem" của trang được hiển thị, bạn có thấy rằng đánh dấu <%: %> không? (bạn không nên) Sanity kiểm tra 2: trang web của bạn có thực sự sử dụng asp.net 4.0 không? Tính năng này không hoạt động ở 2.0. –

+0

"Có" và "Có". Tôi nghĩ rằng, Oded là đúng: khi tôi sử dụng các dấu ngoặc bên ngoài FormView và không có Eval nó hoạt động. – Slauma

Trả lời

8

Bạn đang bối rối data binding expressions, trong đó có cú pháp <%#%> và được sử dụng với Eval (và Bind) với các thẻ đầu ra phản ứng (<%=%><%:%>) mà không thể được sử dụng với Eval.

+1

Cảm ơn, đó là vấn đề. Vì vậy: quay lại HttpUtility.HtmlEncode ... thở dài ... – Slauma

3

Sử dụng cú pháp dữ liệu mã hóa HTML <%#: %>. (Lưu ý ':' sau '#'). Ví dụ:

Text='<%#: Eval("PropertyToEval") %>' 
Các vấn đề liên quan