2012-11-16 1 views
1

내가 모델 클래스라는 이벤트 및 EventRange라는 모델 클래스가 작동하지 : 많은 EventRanges에 대한 목록은 이벤트 클래스를 볼 수 있듯이MVC editorfor 수집

public class Event 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 

    public List<EventRange> RangesCollection { get; set; } 
} 

public class EventRange 
{ 
    public int Id { get; set; } 

    public string RangeName { get; set; } 
    public string RangeDescription { get; set; } 
    public int Capacitiy { get; set; } 
} 

를 포함하면 사용자가 할 수 있어야로 많은 EventRanges를 추가합니다.

이벤트라고 불리는 뷰를 만들었습니다.이 뷰는 짝수 범위의 부분 뷰를 동적으로 추가합니다. 예를 들어 5 개의 EventRanges를 저장하려면 Add Event Range 버튼을 5 번 누릅니다.

이벤트보기 :

eventrange에 대한 부분보기가 "~/조회/이벤트/EditorTemplates/EventRange.cshtml"

EventRange.cshtml으로 저장됩니다

@using (Ajax.BeginForm("CreateEvent", "Events", new AjaxOptions { HttpMethod = "POST" }, new { @class = "mainForm" })) 
{ 
    @*Event data:*@ 
    @Html.LabelFor(m => m.Name)@Html.TextBoxFor(m => m.Name) 
    @Html.LabelFor(m => m.Description)@Html.TextBoxFor(m => m.Description) 

    @*EventRange data:*@ 

    <div id="EventRangediv"> 
    @Html.EditorFor(m => m.RangesCollection) 
    </div> 

} 

:

@model fanaticksMain.Models.EventRange 

@Html.HiddenFor(m => m.Id) 
@Html.DisplayFor(m => m.RangeName) 
@Html.LabelFor(m => m.RangeName)@Html.TextBoxFor(m => m.RangeName) 
@Html.LabelFor(m => m.RangeDescription)@Html.TextBoxFor(m => m.RangeDescription) 

그러나 이벤트 뷰를로드해도 partialview의 요소는로드되지 않으며 이벤트 작업의 이름과 설명에 대한 레이블과 텍스트 상자가로드됩니다. 그러나 eventrange 부분보기에는 아무 것도 표시되지 않습니다.

누구나 내가 뭘 잘못하고 있는지 알 수 있습니까? 또한 양식을 게시하기 위해 컬렉션을 바인딩하는 것이 올바른 방법이라면 누구나 제안 사항이 있습니까?

답변

2

EventRange.cshtml에는 EventRange로 지정된 모델이 있습니다. m.RangesCollection은 EventRange 객체의 컬렉션입니다.

EventRange 컬렉션을 수락하는 것으로 정의 된 모델이 표시되지 않습니다.

각 EventRange를 반복하고 각 하나에 대한 EventRange.cshtml 편집기를 표시하는 코드에서 루프

시도 장소 A :

대신 :

@Html.EditorFor(m => m.RangesCollection) 

시도 :

@for (int i = 0; i < m.RangeCollection.Count; i++) 
{ 
    @Html.EditorFor(m => m.RangeCollection[i]) 
} 
+0

컬렉션에 항목이 포함되어 있지 않습니다.보기는 항목을 rangecollection에 추가하기위한 것입니다. – user1830148

+0

[가변 길이 품목 목록 편집] (http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet)을 참고하십시오. -mvc-2-style /) –

+0

훌륭한 기사, 감사합니다! 나중에 후속 조치를 취할 것입니다. – user1830148

0

"~/Views/Shared/EditorTemplates /"폴더에 "EventRange.cshtml"을 삽입하십시오.

+0

완료를 아직 부분보기에서 아무것도 표시하지 않습니다. – user1830148