1

我有下一个问题是关于在 MVC 中将项目添加到列表的正确方法。

假设我有以下模型:

public class Student
{
    public String Name { get; set; }
    public List<Lesson> Lessons { get; set; }
}

现在我在学生创建视图中,用户可以在其中添加多个课程。视图的外观是有一个下拉菜单,您可以在其中选择课程和添加新下拉菜单的按钮。这样,一个人可以将多个课程添加到课程变量中。

现在我尝试了很多不同的方法,但似乎从来没有合适的方法,因为我不喜欢在视图中出现这个:

 @Html.DropDownListFor(model => model.Lessons[0].Id, new SelectList(...), "Select lesson")

并使用 jquery 或其他方式将 0 更改为 1..2 等。

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

4

1 回答 1

2

你应该看看定义一个编辑器模板:

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

Lesson[0]_Title

更新:方法如下:

在views\shared 中创建一个名为EditorTemplates 的文件夹,然后在这里创建一个带有Lesson 类型模型的局部视图。确保将此部分视图称为“Lesson.cshtml”(如果您不使用剃须刀,则为 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

于 2012-12-07T09:08:10.493 回答