2010-06-09 62 views
0

我的代码(片段):ASP.NET MVC2 TeplatedHelper不渲染HTML的标记的ID

模型是人的类的对象的IEnumerable:

<% foreach (var item in Model) 
    { %> 
    <tr> 
     <td><%= Html.DisplayFor(x=>item.Name) %></td> 
    </tr>  
<% } %> 

它呈现只有标签这样的:

<td>Tommy</td> 

按照link应该渲染HTML标记类似:

alt text

但没有ID和NAME属性。为什么?

回答

1

你使用了错误的模板,您应该使用Html.EditorFor(x => x.Name)

编辑:我说你使用了错误的模板,因为在你的形象是显示一个文本框,而不是一个标签...

Displayfor的默认输出是

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<%= Html.Encode(ViewData.TemplateInfo.FormattedModelValue) %> 

根据Brad Wilson。你可以很容易地建立你自己的,看看布拉德威尔逊的另一篇文章的例子。

或者你可以简单地调用Html.LabelFor(x => x.Name)

如果你总是希望,在你的浏览/分享/ DisplayTemplate添加模板,名称String.ascx,只是把在以下几点:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<%= Html.Label("", ViewData.TemplateInfo.FormattedModelValue) %> 
+0

为什么它错了吗?它应该是一个标签,而不是一个texbox – Tony 2010-06-09 20:07:34

+0

@Tony看到我的编辑... – 2010-06-09 20:39:30