1

我有一个名为 Events 的模型类和一个名为 EventRange 的模型类:

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; }
}

如您所见,Event 类包含一个 List,其中包含尽可能多的 EventRanges,用户应该能够添加许多 EventRanges。

我创建了一个名为 events 的视图,它动态地为 evenrange 附加一个局部视图。例如,如果用户想要保存 5 个 EventRanges,他可以按下 Add Event Range 按钮 5 次。

事件视图:

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

}

事件范围的部分视图保存在“~/views/events/EditorTemplates/EventRange.cshtml”下

事件范围.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)

但是,加载事件视图不会从局部视图加载任何元素,事件名称和描述的标签和文本框工作。但是 eventrange 部分视图没有显示任何内容。

有人知道我做错了什么吗?另外,如果这是绑定集合以发布表单的正确方法,是否有人有任何建议?

4

2 回答 2

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])
}
于 2012-11-16T18:45:11.993 回答
0

尝试将“EventRange.cshtml”放在“~/Views/Shared/EditorTemplates/”文件夹中。

于 2012-11-16T16:48:13.563 回答