我在实体框架中使用 MVC(第一次),首先是数据库
我想要做的是在单个视图中显示来自数据库的数据。我首先创建了数据库,然后基于包含所有表的数据库创建了一个 ADO.NET 实体数据模型。然后,我创建了一个索引视图,该视图使用我的实体数据模型作为模型进行强类型化。
在我的索引中,我在顶部
@model IEnumerable<Forum6.Models.Forum>
这使我可以从我的数据库中的“论坛”表中获取行。如果我尝试添加一个额外的模型,我会在运行时收到以下错误消息:
Line 1: @model IEnumerable<Forum6.Models.Forum> Line 2: @model2 IEnumerable<Forum6.Models.Post>
解析器错误消息:文件中只允许使用一个“模型”语句。
搜索答案后,我发现:ASP MVC 3 中 的一个视图中有两个模型 答案是创建一个包含所有模型(表)的 ViewModel(ParentModel)。这是我创建的 ViewModel:
public class ViewModel
{
public IEnumerable<Forum6.Models.Forum> Forum { get; set; }
public IEnumerable<Forum6.Models.Post> Post { get; set; }
public IEnumerable<Forum6.Models.Topics> Topics { get; set; }
public IEnumerable<Forum6.Models.Users> Users { get; set; }
public IEnumerable<Forum6.Models.PrivMsg> PrivMsg { get; set; }
public IEnumerable<Forum6.Models.Permission> Permission { get; set; }
}
我将控制器编辑为如下所示:
public class HomeController : Controller
{
// ForumDBEntities old_db = new ForumDBEntities();
ViewModel db = new ViewModel();
public ActionResult Index()
{
return View(db);
}
}
然后将旧的 Index 视图替换为使用 ViewModel 作为模型的新的强类型视图。其中包含:
@model IEnumerable<Forum6.Models.ViewModel>
尝试运行它会给我这个错误:
传入字典的模型项的类型为“Forum6.Models.ViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[Forum6.Models.ViewModel] 的模型项
如何使“ViewModel”可枚举?还是我的错误在别处?