Modelos de interface do usuário do ASP.NET MVC 2 exibindo dados sem marcação. Como consertar?
-
21-09-2019 - |
Pergunta
Usando o Editorfor (Model Lambda, "ViewTemplatename"), minha saída não é completamente o esperado. Isso não produz erros, mas está fornecendo saída sem marcação. O que estou fazendo errado?
A saída:
HarryTomRichard
A saída esperada (eu preciso descobrir como renderizar os índices da lista [] também no ID, mas ainda não para esse problema):
<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>
Minhas aulas:
namespace Marcs.Models {
public class Student { public string Name { get; set; } }
public class Classroom { public List<Student> Students { get; set; }
}
Meu controlador:
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);
}
Minha visão de índice:
Inherits="System.Web.Mvc.ViewPage<Marcs.Models.Classroom>" %>
<% using (Html.BeginForm()) { %>
<%= Html.EditorFor(m => m.Students, "Classroom") %>
<input type="submit" value="Save" />
<% } %>
Meu modelo de sala de aula (observe o item m => para que eu possa usar o item, não o modelo):
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>
Meu modelo de aluno:
Inherits="System.Web.Mvc.ViewUserControl<Marcs.Models.Student>"
%><span><%= Html.Encode( Html.EditorFor( m => m.Name)) %></span>
Solução
O JFAR tem a resposta, e eu o marcarei adequadamente quando adicionado. A solução foi simplesmente garantir que os arquivos estivessem localizados em Views-> controlName-> editorTemplates e Views-> controlName-> DisplayTemplates. Eles também podem estar localizados na pasta compartilhada também.
Eu gosto deste post. Agora eu preciso aprender a usar o modelo MVC 2 HTML HELHEDERS que fazem referência a coleções. Está no MVC 2 RC.