Глядя на ваше сообщение об ошибке, ваше представление ожидает IEnumerable
, который содержит классы Project.Models.NewModel
, где вы передаете List
, содержащий классы Project.Models.Movie
.По сути, вы передаете свои данные представления, с которыми он не рассчитан.Вы можете либо изменить свой вид / частичное в верхней части, чтобы прочитать что-то вроде:
@model List<Project.Models.Movie>
Это устанавливает, что вы ожидаете получить список переходов, который вы и передали в контроллере в этом примере.С другой стороны,
@model IEnumerable<Project.Models.Movie>
будет работать так же, как List
наследует от IEnumerable.
Если вы хотите, чтобы представление принимало IEnumerable<Project.Models.NewModel>
, то вам нужно изменить свой контроллерк чему-то вроде: (я делаю предположения о свойствах вашей модели здесь)
public ViewResult Index()
{
return View(db.Movies.Select(m => new NewModel { Title = m.Title, Director = m.Director}));
}
Это тогда передаст вам IEnumerable<Project.Models.NewModel>
представление.
На другом примечании более простой способссылочные партиалы в бритве:
@Html.Partial("_NewPartialView")
Обновление
Вам нужно создать себе ViewModel
, чтобы он выглядел примерно так:
public class IndexViewModel
{
public List<Movie> Movies {get; set;}
public List<NewModel> NewModels {get; set;}
}
public ViewResult Index()
{
var viewModel = new IndexViewModel
{
Movies = db.Movies.ToList(),
NewModels = new List<NewModel>() // Or however you populate it
};
return View(viewModel );
}
Тогда впо вашему мнению, это будет что-то вроде этого для ваших фильмов
@foreach (var moive in Model.Movies) { }
, а у вас будут новые парциальные характеристики модели
@Html.Partial("_NewPartialView", Model.NewModels)
Обратите внимание, что вам нужно будет обновить вашу модель в верхней части индексастраница для ссылки на IndexViewModel.