2009-04-14 14 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) %> 

注 "等しい" と終了セミコロンの欠如。これは、応答に文字列値を出力するために使用される形式です。もう1つのフォーマットでは、単にページコンテキストでコードを実行しますが、レスポンスに自動的には書き込まれません。

+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(...))に変え、明らかにエンコードされたテキストをレスポンスに書き込みます。

関連する問題