我在ActionResult中传递两个列表变量,如下所示。
public ActionResult Index()
{
List<category> cat = _business.ViewAllcat().ToList();
List<Books> book = _business.ViewAllBooks().ToList();
return View(book);
}
当我运行代码时,我得到以下错误
传递到字典中的模型项是类型的 System.Collections.Generic.List1 [Durgesh_Bhai.Models.category],但是 这本词典需要一个类型的模型项 System.Collections.Generic.IEnumerable1 [Durgesh_Bhai.Models.Books]。
当我在Actionresult中只使用一个List时,它的工作正常。
答案 0 :(得分:3)
我也是mvc的新手,但我得到的解决方案是创建一个类,它将所有必需的对象保存为数据成员并传递该类的对象。
我创建了一个名为data的类,并将所有对象分配给该类的对象,并将该对象发送给模型。
或者您可以使用查看包
Class Data
{
public List<category> cat {get;set;}
public List<Books> book {get;set;}
public Data()
{
this.cat = new List<category>();
this.book = new List<Books>();
}
}
public ActionResult Index()
{
Data d=new Data();
d.cat = _business.ViewAllcat().ToList();
d.book = _business.ViewAllBooks().ToList();
return View(d);
}
答案 1 :(得分:2)
请创建一个新的ViewModel类并存储两个列表,如下所示:
public class MyViewModel
{
public List<Category> Categories { get; set; }
public List<Book> Books { get; set; }
public MyViewModel()
{
this.Categories = new List<Category>();
this.Books = new List<Book>();
}
}
public ActionResult Index()
{
MyViewModel model = new MyViewModel();
model.Categories = _business.ViewAllcat().ToList();
model.Books = _business.ViewAllBooks().ToList();
return View(model);
}
然后在你的View(index.cshtml)中,像这样声明MyViewModel:
@model WebApp.Models.MyViewModel
<div>
your html
</div>
我们刚刚使用的概念称为View Model。请在这里阅读更多相关信息: Understanding ViewModel
答案 2 :(得分:0)
您应该创建一个ViewModel类(只是一个.cs类),其中包含您在页面上需要的所有内容。
然后在View的第一行,您应该使用viewmodel类作为模型。
然后在控制器操作中填充模型,如:
public ActionResult Index()
{
List<category> cat = _business.ViewAllcat().ToList();
List<Books> book = _business.ViewAllBooks().ToList();
return View(new MyViewModel() { Cats = cat, Books = book);
}
然后您就可以访问页面上的所有内容。