【发布时间】:2013-12-25 22:18:33
【问题描述】:
我有一个食谱列表,每个食谱都有许多食谱行,我想循环每个食谱及其对应的食谱行 foreach 在父食谱 foreach 内循环。
食谱课
namespace XXX.Models
{
public class Recipe
{
public int RecipeID { get; set; }
public string RecipeName { get; set; }
public string RecipeInstructions { get; set; }
public virtual List<RecipeLine> RecipeLines { get; set; }
}
}
RecipeLine 类
namespace XXX.Models
{
public class RecipeLine
{
public int RecipeLineID { get; set; }
public float Quantity { get; set; }
public int MeasurementID { get; set; }
public int RecipeID { get; set; }
public int IngredientID { get; set; }
public virtual Measurement Measurement { get; set; }
public virtual Recipe Recipe { get; set; }
public virtual Ingredient Ingredient { get; set; }
}
}
不需要列出成分和测量类,但它们的结构很好。
现在让我们看看 ViewModel
namespace XXX.ViewModels
{
public class RecipeLineViewModel
{
public IEnumerable<Recipe> Recipes { get; set; }
public IEnumerable<RecipeLine> RecipeLines { get; set; }
}
}
还有 PartialsController
namespace XXX.Controllers
{
public class PartialsController : Controller
{
private XXXDb db = new XXXDb();
public ActionResult RecipeList()
{
RecipeLineViewModel viewModel;
viewModel = new RecipeLineViewModel();
viewModel.Recipes = db.Recipes.ToList();
viewModel.RecipeLines = db.RecipeLines.Include(r =>
r.Measurement).Include(r => r.Ingredient);
return PartialView("_RecipeList", viewModel);
}
}
}
现在局部视图是 Views > Partials > __RecipeList.cshtml
配方列表部分视图
@model XXX.ViewModels.RecipeLineViewModel
@foreach (Recipe recipe in Model.Recipes)
{
<div>@recipe.RecipeName</div>
<div>@recipe.RecipeInstructions</div>
foreach (RecipeLine recipeLines in Model.RecipeLines)
{
<div class="row">
<div class="large-12 columns">
@recipeLines.Quantity @recipeLines.Measurement.MeasurementEn
@recipeLines.Ingredient.IngredientNameEn
</div>
</div>
}
}
}
(我在每个 recipeLine 的末尾打印了 RecipeID,以表明每个食谱都在重复 RecipeID = 1 的食谱行,而不是与他们自己的 RecipeID 相关的行。我是这个东西的新手,我是假设我应该在某个地方告诉食谱行他们应该循环的 RecipeID ????
这是我得到的结果:
【问题讨论】:
-
如果你的Recipe 类有一个RecipeLines 集合,为什么你的ViewModel 中有一个?你的内部循环应该打印
recipe.RecipeLines... -
我正在尝试修复错误。
标签: c# asp.net-mvc foreach viewmodel partials