ASP.NET MVC - 将多个项添加到列表中

时间:2012-12-07 08:58:08

标签: asp.net-mvc list dynamic

我有关于将项目添加到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等。

您在动态添加多个项目的那些视图中有哪些方法?

1 个答案:

答案 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课程,它应该循环并为每个人编写一个编辑器。非常整洁!

一些链接:

http://forums.asp.net/t/1846290.aspx/1?Editor+template+of+type+IEnumerable+SelectListItem+with+MVC+area