2010-04-20 16 views
35

그냥 MVC 2 출발하여 embbed 코드 (표현) 블록과 같은 일이 나는 그들의 스타터 템플릿에 그들이이 있습니까 <%와 <% =

<%: Html.ActionLink("Home", "Index", "Home")%> 

를 사용하고 내가 MVC에 있는지 확인했다 통지 1은이었다

<%= Html.ActionLink("Home", "Index", "Home")%> 

그들은 같은 물건 이냐? 그렇다면, 등호에서 콜론으로 변경하는 이유는 무엇입니까?

답변

41

콜론 구문은 HTML 자동으로 인코딩됩니다 의미 http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

그들은 수뿐만 아니라 HTML 인코딩 기존의 모든 <%= 블록 때문에 희망 프로젝트의 가장 밖으로 이미 제대로 인코딩 된 것들 (거기) 이상하게 보일 것입니다.

+0

+1 큰 도움을 주셨습니다. 덕분에, –

+0

. phil의 블로그는 반드시 읽어야합니다 - 특히 ASP.NET MVC로 작업하는 경우 –

+2

콜론이 같음에도 불구하고 측면에서 본 참조를 좋아합니다 :-) –

5

ASP .NET 4는 화면에 렌더링하기 전에 출력을 인코딩하는 < % : 구문을 도입했습니다. ASP MVC는 이미 이것을 인코딩했지만보다 명확하게하기 위해 구문을 사용하여 < %를 볼 때마다 출력이 올바르게 인코딩되는지 확인할 수 있습니다.

+2

여기서 누락 된 핵심 단어는 "HTML"입니다. "인코딩 됨"이 아닌 "HTML 인코딩 됨"과 같습니다. –

+0

나는 <% : syntax가 .net 4 전에 소개되었다고 확신한다. – Losbear

+0

.net 4 : 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 –

12

<%=은 출력 버퍼에 쓰는 데 사용됩니다.

<%: 출력 내용을 HTML로 인코딩 한 후 출력 버퍼에 쓰는 데 사용됩니다. IHtmlString 인터페이스가 반환 된 객체에 구현되어 있지 않으면. 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

출력이 이미 도주 한 경우, 이중 인코딩이 반환 된 객체에 IHtmlString 인터페이스를 구현하여 방지 할 수 있습니다

스콧 거스리는이 주제에 대한 좋은 게시물을 가지고있다. http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx

관련 문제