我一直在说错误:
传递到字典中的模型项的类型为“HomebaseSystemNew.Controllers.ProductRepository”,但此字典需要“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);
}
}
答案 0 :(得分:6)
您将在View not the Product中返回存储库。将其更改为:
var product = repo.GetProductID(id);
return View(product );
答案 1 :(得分:1)
简单一点,只需传递正确类型的模型/类。如果您肯定想要传递ProductRepository模型,请将View页面的第一行更改为...
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<HomebaseSystemNew.Controllers.ProductRepository>" %>
或者,如果要传递产品,则需要在控制器操作中返回该产品。 (进一步阅读哪一个更有可能是你想要做的那个)
请注意,正在使用您要传递的模型类型设置“Inherits”属性。
另请注意,您通常不希望将存储库放在控制器文件夹中 - 最好只保留控制器类;)