如何将多个参数传递给视图

本文关键字:参数传递 视图 | 更新日期: 2023-09-27 18:02:37

我在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。类别),但这个字典需要一个类型的模型项System.Collections.Generic.IEnumerable1 [Durgesh_Bhai.Models.Books] .

当我在Actionresult中只使用一个List时,它的工作很好。

如何将多个参数传递给视图

我也是新的mvc,但我得到的解决方案是创建一个类,将持有所有你需要的对象作为数据成员,并传递该类的对象。

我创建了一个名为data的类,并将我所有的对象分配给这个类的对象,并将该对象发送给model。

或者你可以使用view bag

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);
}

请创建一个新的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);
}

然后在你的视图(index.cshtml)中,像这样声明MyViewModel:

@model WebApp.Models.MyViewModel
<div>
    your html
</div>

我们刚刚使用的概念叫做视图模型。请在这里阅读更多内容:理解ViewModel

创建一个包含两个列表的新对象。

public ActionResult Index()
{
    List<category> cat = _business.ViewAllcat().ToList();
    List<Books> book = _business.ViewAllBooks().ToList();
    return View(new CatBooks { Cats = cat, Books = book });
}
public class CatBooks {
    public List<category> Cats { get; set; }
    public List<Books> Books { get; set; }
}

您应该创建一个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);
    }

然后你就可以访问页面上的所有内容