2012-11-16 31 views
1

我有一個模型類稱爲事件,並呼籲EventRange模型類工作: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列表的用戶應該能夠添加大量的EventRanges。

我創建了一個名爲events的視圖,它動態地爲偶數區域添加了一個局部視圖。用戶可以在例子中按下Add Event Range按鈕5次,如果他想保存5個EventRanges。

事件視圖:

@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> 

} 

用於eventrange的局部視圖 「〜/視圖/活動/ EditorTemplates/EventRange.cshtml」

EventRange.cshtml下保存:

@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中的任何元素,標籤和文本框用於事件工作的名稱和描述。但事件範圍局部視圖沒有顯示任何內容。

任何人有任何想法我做錯了什麼?此外,有沒有人有任何建議,如果這是綁定發佈表單的集合的正確方法?

回答

2

EventRange.cshtml將模型指定爲EventRange。 m.RangesCollection是EventRange對象的集合。

我沒有看到被定義爲接受EventRange集合的模型。

嘗試的地方for循環在你的代碼遍歷每個EventRange並顯示每個一個EventRange.cshtml編輯:

相反的:

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

嘗試:

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

該集合不包含任何項目,該視圖用於將項目添加到範圍集合。 – 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