Вы объявляете свою модель представления в методе действия, но не возвращаете ее в свое представление. Вместо этого вы возвращаете запросы из вашей базы данных в ваше представление, которые, конечно, имеют другой тип, чем ваш режим просмотра.
Итак, что вы хотите сделать, это по сути:
public ActionResult Multidata(string sortOrder, string searchString, string currentFilter, int? page, string searchBy, string startdate = null, string enddate = null)
{
var mymodel = new PersonViewModel();
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
mymodel.pers = db.People.ToList();
mymodel.emp = db.Employees.ToList();
mymodel.history = db.EmployeeDepartmentHistories.ToList();
/* ... */
if (searchBy == "Title")
{
return View(mymodel.Where(x => x.emp.JobTitle == searchString || searchString == null).ToList());
}
else
{
return View(mymodel.Where(x => x.pers.FirstName.StartsWith(searchString) || x.pers.LastName.StartsWith(searchString) || searchString == null).ToList());
}
}
Ключевой момент в этих строках:
var people_list = mymodel.pers = db.People.ToList();
Вы присваиваете данные из своего источника данных своей модели представления и отдельной переменной. И тогда вы пытаетесь вернуть people_list
вместо mymodel
.
people_list
имеет тип List<Person>
, а mymodel
имеет тип List<PersonViewModel>
.
Самое простое, что нужно сделать, это просто избавиться от этих переменных и упростить их, просто используя вашу модель представления