【发布时间】:2020-04-03 06:21:21
【问题描述】:
这是我得到的错误:
InvalidOperationException:传入的模型项 ViewDataDictionary 的类型为“ProjectOne.Data.ProjectOneContext”,但 此 ViewDataDictionary 实例需要类型为模型项 'ProjectOne.ViewModel.ItemViewModel'。
它可能相关也可能不相关,但如果不直接在我的代码中输入 OnConfiguring 行,我什至无法连接到数据库。我通常可以将它放在 User Secrets、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);
}
}
}
【问题讨论】:
-
我认为您的意思是返回 return
View(objItemViewModel);而不是整个 DbContext 派生类。 -
就是这样,谢谢!
标签: c# asp.net asp.net-mvc model-view-controller