Asp.net mvc ASP.NET MVC-向列表中添加多个项目

Asp.net mvc ASP.NET MVC-向列表中添加多个项目,asp.net-mvc,list,dynamic,Asp.net Mvc,List,Dynamic,我还有一个问题,关于在MVC中向列表添加项目的正确方法 假设我得到了以下模型: public class Student { public String Name { get; set; } public List<Lesson> Lessons { get; set; } } 并使用jquery或其他类似方法将0更改为1..2等 对于动态添加多个项目的视图,您的方法是什么?您应该了解如何定义编辑器模板: 如果正确编写模板,asp.net将呈现名称类似于以下内容的控

我还有一个问题,关于在MVC中向列表添加项目的正确方法

假设我得到了以下模型:

public class Student
{
    public String Name { get; set; }
    public List<Lesson> Lessons { get; set; }
}
并使用jquery或其他类似方法将0更改为1..2等


对于动态添加多个项目的视图,您的方法是什么?

您应该了解如何定义编辑器模板:

如果正确编写模板,asp.net将呈现名称类似于以下内容的控件:

Lesson[0]_Title
更新:以下是方法:

在views\shared中创建名为EditorTemplates的文件夹 然后创建一个局部视图,其中包含Lesson类型的模型。确保将此部分视图称为“Lesson.cshtml”(如果不使用razor,则称为ascx)

然后你可以做

@Html.EditorFor(model => model.Lessons) 
…asp.net将神奇地发现,由于Lessons是lesson的IEnumerable,它应该为每个lesson循环并呈现一个编辑器。相当整洁

一些链接:


这将是一个很好的解决方案。尽管我们确实需要正确的模板。如果你能找到你正在谈论的链接,那就太棒了!实际上我在挣扎。。。我想看看我是否能自己快速地举出一个例子……谢谢你给我指点编辑模板。虽然如果一个新学生被录取,我们不知道他会上多少课。因此,我们应该能够动态地为课程添加新的编辑器。是的,对不起。。。我已经提供了一个更新,这不是严格意义上的你所要求的,但应该是一个更简单的方式来实现它。假设您想要添加x个课程,那么您可以在模型中预填充该数量的课程,并且它将为每个课程提供一个编辑器,您可以将其保存为单个表单。这有点让人困惑,所以如果您还有更多问题,请随时提问。或者,有一个非常好的解决方案,可以使用jquery和knockout动态创建\删除新课程,然后在您提交表单时仍使其与.net兼容,我将在本周末在博客中介绍。
@Html.EditorFor(model => model.Lessons)