Html.Encode不返回任何内容

时间:2009-04-14 20:30:48

标签: asp.net asp.net-mvc

我无法让这个工作,我想显示一个简单的艺术家名单,但总是得到空链接。

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

我已经调试了它,我确信该模型包含艺术家列表。

谢谢, 彼得

2 个答案:

答案 0 :(得分:17)

将其更改为:

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

注意“等于”并且缺少结束分号。这是用于将字符串值输出到响应的格式。另一种格式只是在页面上下文中执行代码,但不会自动写入响应。

答案 1 :(得分:1)

实际上,ASP.NET中的<% some code %>语法转换为“执行此代码”非常简单。

ASP.NET中的<%= some code %>语法转换为Response.Write(some code)

基于此,很明显为什么<% Html.Encode(...); %>没有返回任何内容。它正在编码您的文本,但没有人将其写入响应!使用<%= Html.Encode(...) %>,ASP.NET编译器将其转换为Response.Write(Html.Encode(...)),这显然会将编码后的文本写入响应。