2009-04-14 8 views
2

이 작업을 수행 할 수 없으며 간단한 아티스트 이름 목록을 표시하고 싶지만 항상 비어있는 링크가 반환됩니다.Html.Encode가 아무 것도 반환하지 않습니다.

foreach (Artist artist in Model) 
{%> 
    <a href="gotosomewhere"><% Html.Encode(artist.Name); %></a> 
<%} 

나는 그것을 디버깅했으며 그 모델에는 아티스트 목록이 포함되어 있습니다.

감사합니다, 피터

+0

같은 자리에서 요청하고 채워지는 다른 컨트롤이 있습니까? 양식을 컨트롤러에 올바르게 전달하고 있는지 확인 하시겠습니까? – TStamper

+0

나는 여러 번 똑같은 문제를 겪었다. 당신은 너무 오랫동안 코드 조각을 쳐다 보며 결국에는 똑같은 표정을 짓고 있습니다. –

+0

정말 그렇습니다. 조나단 : D – Peter

답변

17

변경 그것에 :

<%= Html.Encode(artist.Name) %> 

참고 "동일"와 닫는 세미콜론의 부족. 이것은 문자열 값을 응답에 출력하는 데 사용되는 형식입니다. 다른 형식은 단순히 페이지 컨텍스트에서 코드를 실행하지만 응답에 자동으로 쓰지는 않습니다.

+0

나에게 이것을 지적 해 주셔서 감사합니다! 나는 그것이 어리 석다는 것을 알았다 :) – Peter

1

실제로 ASP.NET의 <% some code %> 구문은 "이 코드를 실행하는"매우 간단하게 번역됩니다.

ASP.NET의 <%= some code %> 구문은 Response.Write(some code)으로 변환됩니다.

이것을 바탕으로 왜 <% Html.Encode(...); %>이 반환하는지 분명해진다. 그것은 당신의 텍스트를 인코딩하지만, 아무도 응답에 그것을 쓰고있다! <%= Html.Encode(...) %>을 사용하면 ASP.NET 컴파일러에서 코드를 Response.Write(Html.Encode(...))으로 바꿔 인코딩 된 텍스트를 응답에 씁니다.

관련 문제