2010-02-20 3 views
0

EditorFor (모델 람다, "viewTemplateName")를 사용하면 내 결과가 예상대로 나지 않습니다. 이것은 오류를 생성하지 않지만 마크 업없이 출력을 렌더링합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?태그가없는 데이터를 표시하는 ASP.NET MVC 2 UI 템플릿. 어떻게 고치는 지?

아웃풋 :

HarryTomRichard 

예상 출력 (I 아직 그 문제에 너무하지만 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

문제는 View 경로로 인해 발생할 수 있습니다. 당신은 그 파일 전부의 경로를 게시 할 수 있습니까? – jfar

+0

와우. 그래, 그게 다야. 대답으로 써서 적절하게 표시하겠습니다. 도와 주셔서 감사합니다. 이제 EditorFor를 사용하여 체크 박스와 라디오 버튼 세트를 렌더링 한 다음 "Classroom [0] _Student [0] _Name"과 같은 ID로 List 항목을 렌더링하는 등의 작업을 수행합니다. –

답변

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에서 필요로하지 않는다고 생각합니다. 즉, 사용자 정의 HTML 도우미 대신 EditorFor 및 DisplayFor를 사용할 수 있습니다. –