Я получаю классическое c исключение:
InvalidOperationException: элемент модели, переданный в ViewDataDictionary, имеет тип 'PieShop.ViewModels.HomeViewModel', но этот экземпляр ViewDataDictionary требует элемент модели типа 'System.Collections.Generi c .IEnumerable`1 [PieShop.Models.Pie]'
при попытке визуализации страницы в ASP. NET Core MVC.
Я видел много ответов на этот вопрос, но все они, похоже, являются результатом очевидного несоответствия типов данных между тем, что передается в представление от контроллера, и тем, что объявлено в самом представлении. В моем случае они идеально совпадают. Вот мой контроллер:
public class HomeController : Controller
{
private readonly IPieRepository pieRepository;
public HomeController(IPieRepository pieRepository)
{
this.pieRepository = pieRepository;
}
public IActionResult Index()
{
var pies = pieRepository.GetAllPies();
var vm = new HomeViewModel()
{
SomeData = "haiod",
Title = "Welcome to the Pie Shop"
};
return View(vm);
}
}
Вот модель вида:
public class HomeViewModel
{
public string Title { get; set; }
public string SomeData { get; set; }
}
А вот вид (который называется Views/Home/Index.cshtml
:
@model PieShop.ViewModels.HomeViewModel
<h1>@Model.SomeData</h1>
Модель передается в вид из контроллера, и то, что вид объявляет в качестве своей модели, явно точно такого же типа. Что дает?