C# 派生类的MVC 3积垢

C# 派生类的MVC 3积垢,c#,inheritance,crud,derived-types,C#,Inheritance,Crud,Derived Types,伙计们,我需要帮助。我是MVC新手 我得到了这个错误 传递到字典中的模型项的类型为System.Collections.Generic.List'1[BaseClass],但此字典需要类型为System.Collections.Generic.IEnumerable'1[DerivedClass]的模型项 这是我的两个行动 namespace Namespace.Controllers { public class DerivedController : Controller

伙计们,我需要帮助。我是MVC新手

我得到了这个错误

传递到字典中的模型项的类型为
System.Collections.Generic.List'1[BaseClass]
,但此字典需要类型为
System.Collections.Generic.IEnumerable'1[DerivedClass]
的模型项

这是我的两个行动

namespace Namespace.Controllers
{ 
    public class DerivedController : Controller
    {
        private Context db = new Context();
    }

    public ViewResult Index()
    {
        var baseClass= db.BaseClass.Include(s => s.Arrea);
        return View(BaseClass.ToList());
    }

    //
    // GET: /Derived/Details/5

    public ViewResult Details(int id)
    {
        Derived derived = db.BaseClass.OfType<Derived>().Single(c => c.SDSID==id);
        return View(derived);
    }
namespace.Controllers
{ 
公共类DerivedController:控制器
{
私有上下文数据库=新上下文();
}
公共视图结果索引()
{
var baseClass=db.baseClass.Include(s=>s.Arrea);
返回视图(BaseClass.ToList());
}
//
//获取:/Derived/Details/5
公共视图结果详细信息(int id)
{
派生的=db.BaseClass.OfType().Single(c=>c.SDSID==id);
返回视图(派生);
}
我在TPT继承中使用EF codefirst。到目前为止,包括基类。
我做错了什么?我已经搜索了两天了。如果有任何帮助,我们将不胜感激。

您的视图可能是强类型的,您传递给它的内容是错误的

视图中的第一行应该是(如果您使用的是razor)

@model IEnumerable
把它改成

@model IEnumerable<BaseClass>
@model IEnumerable

哪个操作会出错?这两个操作都会出错。您可以发布两个视图的内容吗?如果它们很大,可能只是每个视图的前5行。@model IEnumerable@{ViewBag.Title=“Index”;}Index@Html.ActionLink(“新建”、“创建”)

index-Action和detail-Action@model-Models.base@{ViewBag.Title=“Details”}Details-Sleep-star@Html.DisplayFor(model=>model.star)的星号感谢您的回复,它似乎在正确的方向上,但新的错误是:“Models.Base”不包含“star”的定义,并且没有接受扩展方法“star”……star是派生类上的属性。可能是您在视图中引用了“star”,它应该是“star”(大写“S”),公共属性通常是大写的?这个答案是向另一个方向移动的(将视图更改为使用基类)。您仍然可以通过类型转换来获取派生属性。@Adrian,否,因为这些视图是生成的(Scafold?),我没有键入“星形”,所以它引用正确。
@model IEnumerable<BaseClass>