Это ошибка, которую я получаю:
InvalidOperationException: элемент модели, передаваемый в ViewDataDictionary, имеет тип 'ProjectOne.Data.ProjectOneContext', но для этого экземпляра ViewDataDictionary требуется элемент модели типа 'ProjectOne.ViewModel.ItemViewModel'.
Это может быть, а может и не быть связано, но я не могу даже подключиться к базе данных, не введя непосредственно мою строку OnConfiguring в мой код. Обычно я могу поместить его в секреты пользователя, appsettings. json или в отдельный файл класса. Но это не работает в appsettings. json, по крайней мере.
Я не уверен, что именно здесь происходит. Я опубликую свой код ниже.
Может кто-нибудь помочь мне с этим? Спасибо!
DBContext:
namespace ProjectOne.Data
{
public class ProjectOneContext : DbContext
{
public ProjectOneContext(){}
public ProjectOneContext(DbContextOptions<ProjectOneContext> options) : base(options){}
public DbSet<ProjectOne.Models.Categories> Categories { get; set; }
}
}
ItemViewModel:
@model ProjectOne.ViewModel.ItemViewModel
@{
ViewBag["Title"] = "Index";
}
<h1>Index</h1>
<div class="container">
<div class="col-md-4">
<div class="form-group">
Category:
@Html.DropDownListFor(expression: model => model.CategoryId, new SelectList(Model.CategorySelectListItem, dataValueField: "Value", dataTextField: "Text"), htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="col-md-4">
<div class="form-group">
Item Code:
@Html.TextBoxFor(expression: model => model.ItemCode, htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="col-md-4">
<div class="form-group">
Item Name:
@Html.TextBoxFor(expression: model => model.ItemName, htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="col-md-4">
<div class="form-group">
Description:
@Html.TextBoxFor(expression: model => model.Description, htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="col-md-4">
<div class="form-group">
Item Price:
@Html.TextBoxFor(expression: model => model.ItemPrice, htmlAttributes: new { @class = "form-control" })
</div>
</div>
<div class="col-md-4">
<div class="form-group">
Image Path:
@Html.TextBoxFor(expression: model => model.ImagePath, htmlAttributes: new { type = "file", @class = "form-control" })
</div>
</div>
</div>
Контроллер элементов:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using ProjectOne.Data;
using ProjectOne.ViewModel;
namespace ProjectOne.Controllers
{
public class ItemController : Controller
{
private readonly ProjectOneContext objECartDBEntities;
public ItemController()
{
objECartDBEntities = new ProjectOneContext();
}
public IActionResult Index()
{
ItemViewModel objItemViewModel = new ItemViewModel();
objItemViewModel.CategorySelectListItem = (from objCat in objECartDBEntities.Categories
select new SelectListItem()
{
Text = objCat.CategoryName,
Value = objCat.CategoryId.ToString(),
Selected = true
});
return View(objECartDBEntities);
}
}
}