使用MVC4向所有页面添加Categorylist

时间:2012-11-21 10:23:34

标签: asp.net-mvc asp.net-mvc-4

我是MVC4和MVC的新人。

我有homecontrollercategorycontrollercategorycontroller将数据从模型发送到categoryIndex视图。这样做很好。

但现在我想在所有可用的控制器上添加categorylist

我已修复此问题以添加所有类return view(db.categorys.ToList());并将categoryIndex添加到共享文件夹。在_layout.cshtml我添加了@ RenderPage("〜/")`,这样就可以了。

但是当我必须在回复中传递的不只是(db.categorys.ToList())时,它就会出错。

我该如何解决这个问题。如何正确地为每个控制器和页面添加类别列表?

2 个答案:

答案 0 :(得分:1)

CategoryList集合作为属性添加到您的ViewModel(所有页面)。您可以将其添加到基类并从中继承。

public class Category
{
  public int ID { set;get;}
  public string Name { set;get;}
}
public class BasePageViewModel
{
  public List<Category> CategoryList { set;get;}

  BasePageViewModel()
  {
    CategoryList=new List<Category>();
  }
}

现在,您可以从此基类继承其他视图模型。

public class ProductViewModel : BasePageViewModel
{
  public string ProductName { set;get;}
  //Other properties
}

现在,在您的视图中,强烈键入了ProductViewModel,您可以调用Html.Partial来显示CategoryList局部视图。

@model ProductViewModel
<h3>This page is for product @Model.ProductName</h3>
@Html.Partial(Model.CategoryList)

假设您有部分视图来呈现CategoryList

答案 1 :(得分:0)

我建议将常用的东西(例如类别列表)扔到ViewBag中。这将允许您进行一些分离,只返回视图需要的位置。希望这有帮助!