我是MVC Noob,但我真的想获得一些使用MVC的经验,所以我尝试使用MVC重新创建一个Asp Classic项目。下面的代码不会显示膳食/索引页面上与菜单相关的膳食列表。在视图中显示模型
但是,我已经阅读了几种不同的模式,ninject和自动映射器,但是从我可以告诉它什么都没有,这是处理简单关联时所必需的。
我只想将菜单添加到菜单并汇总每个菜单的膳食价格。
型号:
public class Meal
{ [Key]
public int MealId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public int MenuId { get; set; }
}
public class Menu
{
[Key]
public int MenuId { get; set; }
public DateTime WeekendServed { get; set; }
public decimal Price { get; set; }
public List<Model> Meals { get; set; //Menus have meals.
}
菜单控制器:
public ViewResult Index()
{
return View(unitOfWork.MenuRepository.Get());
}
Menu/Index/
:
@model IEnumerable<Skimos.Models.Meal>
----
<Table Headers>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.WeekendServed)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@foreach (var meal in item.Meals)
{
@Html.Display(meal.Name)
@Html.Display(meal.Description)
@Html.Display(meal.Price.ToString())
}
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.MenuId }) |
@Html.ActionLink("Details", "Details", new { id=item.MenuId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.MenuId })
</td>
</tr>
}
MenuRepository public IQueryable Menus { get { return context.Menus; } }
编辑:
可以显示'unitOfWork.MenuRepository.Get()'的代码,以及强类型的视图是什么? – christiandev
请勿围绕实体框架实施存储库/工作单元模式。 EF *已经*使用这种模式('DbContext'是你的UoW,你的'DbSet's是你的仓库)。如果你想抽象使用EF的逻辑(这是一个好主意),那么应该实现类似服务模式的东西。 –
@ChrisPratt有关如何在EF中集成服务模式的任何链接? ,EF通过provind DBSet和DBContext为您提供了所有事情:如何更好地控制开发人员不允许将对象添加到某些数据集,而不允许在DBSet上执行某些操作? –