MVC控制器和存储库模型
本文关键字:模型 存储 控制器 MVC | 更新日期: 2023-09-27 18:11:33
我一直得到一个错误说:
传入字典的模型项的类型是"HomebaseSystemNew.Controllers"。productrerepository ',但是这个字典需要一个类型为'HomebaseSystemNew.Models.Product'的模型项
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<HomebaseSystemNew.Models.Product>" %>
我的库:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using HomebaseSystemNew.Models;
namespace HomebaseSystemNew.Controllers
{
public class ProductRepository
{
public Product GetProductID(int Pid)
{
DatabaseLinkedDataContext db = new DatabaseLinkedDataContext();
return db.Products.FirstOrDefault(ans => ans.Pid == Pid);
}
}
我的控制器:
using System.Linq;
using System.Web.Mvc;
using HomebaseSystemNew.Models;
namespace HomebaseSystemNew.Controllers
{
public class ProductsController : Controller
{
public ActionResult EditProduct(int id)
{
ProductRepository repo = new ProductRepository();
repo.GetProductID(id);
return View(repo);
}
}
您返回的是View中的存储库,而不是Product。改成这样:
var product = repo.GetProductID(id);
return View(product );
简单,只需传递正确的模型/类类型。如果你确实想传递一个productrerepository Model,那么将View页面的第一行更改为…
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<HomebaseSystemNew.Controllers.ProductRepository>" %>
或者,如果您想传递Product,那么您需要在控制器操作中返回它。(进一步阅读更有可能是你想要做的)
注意"Inherits"属性是用你想传递的模型类型设置的。
还要注意,你通常不希望将存储库放在控制器文件夹中——最好只保留控制器类;)