2009-04-14 151 views
2

我不能得到這個工作,我想顯示一個簡單的藝術家名單,但總是得到空鏈接。Html.Encode不會返回任何東西

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

我已經調試過它,並且我確定Model包含藝術家列表。

謝謝, 彼得

+0

您是否有任何其他控件是您從同一位置請求的,正在填充的。確認您正確地將表單傳遞給控制器​​? – TStamper 2009-04-14 20:33:02

+0

我有這麼多次相同的問題。你盯着一段代碼這麼長時間,最後它是一個模糊的等號。 – 2009-04-14 21:52:27

回答

17

將其更改爲:

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

注意 「等於」 和缺乏收盤分號。這是用於將字符串值輸出到響應的格式。其他格式只是在頁面上下文中執行代碼,但不會自動寫入響應。

1

事實上,ASP.NET中的<% some code %>語法很容易轉換爲「執行此代碼」。

ASP.NET中的<%= some code %>語法翻譯爲Response.Write(some code)

基於此,變得清楚爲什麼<% Html.Encode(...); %>什麼都不返回。它是對你的文本進行編碼,但沒有人將它寫入響應中!使用<%= Html.Encode(...) %>,ASP.NET編譯器將其轉換爲Response.Write(Html.Encode(...)),這顯然會將編碼文本寫入響應。