我正在尝试使用 .net 4.5、Entity 5、MVC 4 创建一个简单的多模型表单
根据我看到的示例,我希望 EditorTemplates\Tasks.cshtml 被渲染两次,一次为项目中的每个任务,但它似乎只被调用一次并传递了我似乎无法使用的任务集合。
有任何想法吗?我的课程/观点如下所列。
任务:
public partial class Task
{
public Task()
{
this.TaskPeople = new HashSet<TaskPerson>();
}
public int Id { get; set; }
public string Title { get; set; }
public int ProjectId { get; set; }
public virtual Project Project { get; set; }
public virtual ICollection<TaskPerson> TaskPeople { get; set; }
}
项目:
public partial class Project
{
public Project()
{
this.Tasks = new HashSet<Task>();
}
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Task> Tasks { get; set; }
}
HomeController.New():
public ActionResult New()
{
Project project = new Project();
project.Tasks.Add(new Task() { });
project.Tasks.Add(new Task() { });
return View(project);
}
主页/New.cshtml:
@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@Html.LabelFor(m => m.Title)
@Html.EditorFor(m => m.Tasks, "Tasks")
<input type="submit" value="Save" />
}
主页/EditorTemplates/Tasks.cshtml
@model IEnumerable<MvcApplication5.Models.Task>
@Html.TextBoxFor(m => m.Title) // Error Here
编辑:
如果我从 Tasks.cshtml 中取出 IEnumerable 并将其替换为
@model MvcApplication5.Models.Task
我得到以下异常:
The model item passed into the dictionary is of type 'System.Collections.Generic.HashSet`1[MvcApplication5.Models.Task]', but this dictionary requires a model item of type 'MvcApplication5.Models.Task'.