2010-02-20 24 views
0

使用EditorFor(模型lambda,「viewTemplateName」),我的輸出完全不是預期的。這不會產生任何錯誤,但它是沒有標記的渲染輸出。我究竟做錯了什麼?ASP.NET MVC 2 UI模板顯示沒有標記的數據。怎麼修?

輸出:

HarryTomRichard 

預期輸出(我需要弄清楚如何呈現的ID名單[]指標太多,但沒有對這個問題還沒有):

<table> 
    <tr><td><span><input type="Text" id="Name[0]" value="Harry" /></span></td></tr> 
    <tr><td><span><input type="Text" id="Name[1]" value="Tom" /></span></td></tr> 
    <tr><td><span><input type="Text" id="Name[2]" value="Richard" /></span></td></tr> 
</table> 

我類:

namespace Marcs.Models { 
    public class Student { public string Name { get; set; } } 
    public class Classroom { public List<Student> Students { get; set; } 
} 

我的控制器:

public ActionResult Index() { 
    var myStudents = new List<Student>(); 
    myStudents.Add(new Student { Name = "Harry" }); 
    myStudents.Add(new Student { Name = "Tom" }); 
    myStudents.Add(new Student { Name = "Richard" }); 
    var myClass = new Classroom {Students = myStudents}; 
    return View(myClass); 
} 

我的索引視圖:

Inherits="System.Web.Mvc.ViewPage<Marcs.Models.Classroom>" %> 
<% using (Html.BeginForm()) { %> 
    <%= Html.EditorFor(m => m.Students, "Classroom") %> 
    <input type="submit" value="Save" /> 
<% } %> 

我的課堂模板(注意M =>項,這樣我就可以使用的項目,而不是型號):

Inherits="System.Web.Mvc.ViewUserControl<List<Marcs.Models.Student>>" %> 
<table> 
    <% foreach (Marcs.Models.Student item in Model) 
    { %><tr><td><%= Html.EditorFor(m => item, "Student")%></td></tr><% 
    } %> 
</table> 

我的學生模板:

Inherits="System.Web.Mvc.ViewUserControl<Marcs.Models.Student>" 
%><span><%= Html.Encode(Html.EditorFor(m => m.Name)) %></span> 
+2

問題可能是由於您的視圖路徑。你能發佈所有這些文件的路徑嗎? – jfar

+0

哇。是的,就是這樣。寫下來作爲答案,我會適當地標記它。謝謝您的幫助。現在開始使用EditorFor呈現複選框和單選按鈕集,然後使用id爲「Classroom [0] _Student [0] _Name」等來呈現列表項。 –

回答

0

jfar有答案,我會在添加時適當標記它。解決方案只是確保文件位於Views-> ControllerName-> EditorTemplates和Views-> ControllerName-> DisplayTemplates中。這些也可以位於共享文件夾中。

我喜歡這個職位。現在我需要學習如何使用引用集合的MVC 2模板Html助手。它在MVC 2 RC中。

+0

你有沒有使用模板html助手與集合的運氣? – kdawg

+0

是的。此鏈接非常有用http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/。它提到了模板助手。他隨機化了索引,但我不認爲MVC 2需要它,這意味着您可以使用EditorFor和DisplayFor來代替他的自定義HTML助手。 –