2009-04-14 2 views
2

Я не могу заставить это работать, я хочу показать простой список имен исполнителей, но всегда получаю пустые ссылки.Html.Encode ничего не возвращает

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

Я отлаживал его, и я уверен, что модель содержит список художников.

Спасибо, Peter

+0

У вас есть какие-либо другие элементы управления, которые вы запрашиваете из того же места, которое заполняется. подтвердить, что вы правильно передаете форму контроллеру? – TStamper

+0

У меня была такая же проблема столько раз. Вы так долго смотрите на кусок кода и, в конце концов, это яркий знак равенства. –

+0

так верно Джонатан: D – Peter

ответ

17

Изменить это:

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

Обратите внимание на "равно" и отсутствие закрывающей точкой с запятой. Это формат, используемый для вывода строкового значения в ответ. Другой формат просто выполняет код в контексте страницы, но автоматически не записывает ответ.

+0

Спасибо, что указали это мне! Я знал, что это будет что-то глупое :) – Peter

1

Действительно, синтаксис <% some code %> в ASP.NET достаточно прост для «выполнения этого кода».

Синтаксис <%= some code %> в ASP.NET переводит на Response.Write(some code).

Исходя из этого, становится ясно, почему <% Html.Encode(...); %> ничего не возвращает. Он кодирует ваш текст, но никто не пишет его в ответ! С <%= Html.Encode(...) %> компилятор ASP.NET превращает его в Response.Write(Html.Encode(...)), что, очевидно, будет писать закодированный текст в ответ.

Смежные вопросы