我是MVC4和MVC的新人。
我有homecontroller
和categorycontroller
。 categorycontroller
将数据从模型发送到categoryIndex
视图。这样做很好。
但现在我想在所有可用的控制器上添加categorylist
。
我已修复此问题以添加所有类return view(db.categorys.ToList());
并将categoryIndex
添加到共享文件夹。在_layout.cshtml
我添加了@ RenderPage("〜/")`,这样就可以了。
但是当我必须在回复中传递的不只是(db.categorys.ToList())
时,它就会出错。
我该如何解决这个问题。如何正确地为每个控制器和页面添加类别列表?
答案 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中。这将允许您进行一些分离,只返回视图需要的位置。希望这有帮助!