2010-04-20 7 views

Trả lời

41

cú pháp thư ruột kết có nghĩa là bạn sẽ được mã hóa html tự động: http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

Họ có thể không chỉ là html mã hóa tất cả các <%= khối hiện có, bởi vì điều đó đã được mã hóa đúng cách (đó là hy vọng hầu hết các dự án ra ở đó) sẽ trông kỳ lạ.

+0

+1 cho bài đọc tuyệt vời mà bạn đã liên kết. –

+0

cảm ơn, @bears. blog của phil là phải đọc - đặc biệt là nếu bạn đang làm việc với ASP.NET MVC –

+2

Tôi thích tham chiếu đến dấu hai chấm bằng nhưng được xem từ phía bên :-) –

5

ASP .NET 4 giới thiệu cú pháp <%: đã mã hóa đầu ra trước khi hiển thị nó lên màn hình. ASP MVC đã được mã hóa này nhưng rõ ràng hơn họ bắt đầu sử dụng cú pháp cũng như làm cho nó rõ ràng rằng bất cứ khi nào bạn nhìn thấy <%: bạn có thể chắc chắn đầu ra sẽ được mã hóa đúng cách.

+2

Từ khóa bạn đang thiếu ở đây là "HTML" như trong "HTML được mã hóa" - không chỉ "được mã hóa". –

+0

Tôi chắc chắn rằng cú pháp <%: đã được giới thiệu trước đây .net 4. – Losbear

+0

Đó là .net 4: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt -syntax-for-html-encoding-đầu ra-in-asp-net-4-và-asp-net-mvc-2.aspx –

12

<%= được sử dụng để ghi vào bộ đệm đầu ra.

<%: được sử dụng để ghi vào bộ đệm đầu ra, sau khi mã hóa HTML nội dung ... Trừ khi giao diện IHtmlString đã được triển khai trên đối tượng được trả về.

Scott Guthrie có một bài xuất sắc về chủ đề này: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx

Nếu đầu ra đã được bỏ trốn, đôi mã hóa có thể được ngăn ngừa bằng cách thực hiện các giao diện IHtmlString trên đối tượng trả lại. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx