ASP.NET MVC 2 UI模板显示没有标记的数据。怎么修?

时间:2010-02-20 04:02:12

标签: asp.net-mvc templates model-binding

使用EditorFor(model lambda,“viewTemplateName”),我的输出完全不符合预期。这不会产生任何错误,但它是渲染输出而没有标记。我究竟做错了什么?

输出:

HarryTomRichard

预期输出(我需要弄清楚如何在id上呈现List []索引,但尚未解决该问题):

<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 =&gt;项目,以便我可以使用该项目,而不是模型):

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>

1 个答案:

答案 0 :(得分:0)

jfar有答案,我会在添加时对其进行适当标记。解决方案只是确保文件位于Views-&gt; ControllerName-&gt; EditorTemplates和Views-&gt; ControllerName-&gt; DisplayTemplates中。它们也可以位于“共享”文件夹中。

我喜欢这篇文章。现在我需要学习如何使用引用集合的MVC 2模板Html助手。它在MVC 2 RC中。