2010-06-09 55 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