На основании ответа Джейсона первая строка в вашем представлении должна содержать:
<%@ Inherits="System.Web.Mvc.ViewPage<StudentModel>" %>
Это говорит о том, что «Модель» относится к типу StudentModel. Если в этой первой строке есть другие биты (Title, Language, MasterPageFile и т. Д.), То они могут остаться там.
- edit : добавить длинные комментарии -
Следует помнить, что SelectListItem состоит из трех обязательных частей: Value, Text и Selected. Значение является ключом, поэтому что-то вроде StudentId или DocentId. Текст отображается в списке, поэтому что-то вроде StudentName или DocentName. Выбранный указывает, выбран ли этот элемент в списке, обычно ложный.
Сейчас похоже, что у вас есть методы, которые возвращают только список имен учащихся (Docent.ReturnStudentsNormal () и Docent.ReturnStudentsNoClass ()). Я хотел бы, чтобы эти методы возвращали список пар ключ-значение, ключом является StudentId, а значением - StudentName.
Тогда вы можете изменить класс вашей модели на
public class StudentModel
{
List<SelectListItem> NormalStudents;
List<SelectListItem> StudentsNoClass;
}
и в вашем контроллере
public ActionResult IndexStudents(Docent docent, int lessonId, int classId)
{
var studentModel = new StudentModel();
var normalStudents = docent.ReturnStudentsNormal(lessonId, classId);
foreach (var student in normalStudents)
{
studentModel.NormalStudents.Add(new SelectListItem() {Value = student.Key, Text = student.Value});
}
var studentsNoClass = docent.ReturnStudentsNormal(lessonId, classId);
foreach (var student in studentsNoClass)
{
studentModel.StudentsNoClass.Add(new SelectListItem() {Value = student.Key, Text = student.Value});
}
return View(studentModel);
}
Теперь вы сможете использовать эти свойства в вашей модели напрямую для Html.ListBox()
.