我有一个名为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类包含一个EventRanges的List,因为用户应该能够添加很多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”下
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)
但是,加载事件视图不会加载部分视图中的任何元素,事件的名称和描述的标签和文本框。但事件范围部分视图没有显示任何内容。
任何人都有人知道我做错了什么?另外,如果这是绑定集合以发布表单的正确方法,是否有人有任何建议?
答案 0 :(得分: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])
}
答案 1 :(得分:0)
尝试将“EventRange.cshtml”放在“〜/ Views / Shared / EditorTemplates /”文件夹中。