1

我是 MVC4 的新手,只是 MVC。

我有一个homecontroller和一个categorycontroller。将categorycontroller数据从模型发送到categoryIndex视图。这很好用。

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

我已经修复了这个以添加到所有类return view(db.categorys.ToList());并添加categoryIndex到共享文件夹中。在_layout.cshtml我添加一个@RenderPage("~/")` 并且这有效。

但是,当我必须通过的不仅仅是(db.categorys.ToList())返回时,它就会出错。

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

4

2 回答 2

1

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

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

于 2012-11-21T14:24:51.120 回答
0

我建议将常用的东西(例如类别列表)放入 ViewBag。这将允许您进行一些分离,并且只返回需要存在的视图。希望这有帮助!

于 2012-11-21T14:20:01.227 回答