我有关于将项目添加到MVC列表中的正确方法的下一个问题。
假设我有以下型号:
public class Student
{
public String Name { get; set; }
public List<Lesson> Lessons { get; set; }
}
现在我在学生创建视图中,用户可以在其中添加多个课程。视图的显示方式是有一个下拉列表,您可以在其中选择课程和按钮以添加新的下拉列表。这样,一个人就可以在Lessons变量中添加多个课程。
现在我尝试了很多不同的方法,但似乎从来没有合适的方法,因为我不喜欢在视图中有这个:
@Html.DropDownListFor(model => model.Lessons[0].Id, new SelectList(...), "Select lesson")
用jquery或者之所以将0更改为1..2等。
您在动态添加多个项目的那些视图中有哪些方法?
答案 0 :(得分:2)
您应该查看定义编辑器模板:
如果您正确编写模板,asp.net将使用类似于:
的名称呈现控件Lesson[0]_Title
更新:以下是:
在views \ shared中创建一个名为EditorTemplates的文件夹 然后在此处创建一个具有Lesson类型模型的局部视图。请务必调用此部分视图&#34; Lesson.cshtml&#34; (或ascx,如果你不使用剃须刀)
然后你可以......
@Html.EditorFor(model => model.Lessons)
...而且asp.net会神奇地弄清楚,因为Lessons是一个IEnumerable课程,它应该循环并为每个人编写一个编辑器。非常整洁!
一些链接: