2009-04-14 152 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(...)),这显然会将编码文本写入响应。