【发布时间】:2013-12-09 16:02:45
【问题描述】:
我有一个带有多个视图的 MVC 4 应用程序。 IE。产品、食谱、分销商和商店。
每个视图都基于一个模型。
让我们保持简单,说我所有的控制器都传递了一个类似的视图模型,看起来像我的 Product 操作:
public ActionResult Index()
{
return View(db.Ingredients.ToList());
}
好的,这很好,没有问题。但是现在我的所有页面都正常工作了,我想更改我的导航(每个视图都有下拉菜单)以加载该模型中的项目。
所以我会有一个带有 4 个按钮(产品、食谱、分销商和商店)的导航。
当您滚动每个按钮(假设我们滚动产品按钮)时,下拉菜单会列出产品。
为此,我需要创建某种类型的 ViewModel,将所有 4 个模型组合在一起。显然我不能只为每个导航元素剪下一个 PartialView 并使用
@model IEnumerable<GranSabanaUS.Models.Products>
然后重复该下拉菜单的产品,因为那样导航只会在产品视图中起作用,而在其他任何地方都不起作用。
(After the solution)
是的 ROWAN 您在我创建的导航类型中是正确的,请参见此处:
【问题讨论】:
-
您是否使用 jQuery 填充将用作下拉列表的 div?
-
是的,更具体地说,我使用的是 Foundation 4 的顶栏导航元素
-
我只需要帮助创建 viewModel 来将多个模型传递给一个视图,不需要 jQuery 结束的帮助
-
如果我理解正确的话,你并没有为你的模型创建一个特定的类,对吧?您似乎想要创建一个包含 public db.Ingredients { get; 的“MenuContents”类。放; } (连同您的其他数据库项目)。我通常会创建一个名为“PopulateModel”的方法来读取数据库,并填写所有成员变量。在您的控制器中,您将创建此类的一个新实例并将其传递给您的局部视图。然后您的 cshtml 文件可以使用每个列表来填写它们的下拉列表。
标签: asp.net-mvc-4 navigation viewmodel partial-views