在过去的几个星期里,我一直在研究我可能做的所有事情,似乎已经找到了如何使用多个模型创建表格并保存到数据库的方法。
我正在尝试在单个表单上创建一个或多个配料添加到配方中。我已经创建了所有生成的模板crud视图。我对这个方向感到困惑,并且正在讨论使用MVC Controls Toolkit,因为我需要能够使用jquery和ajax在表单上添加另一个成分。现在,我主要担心的是能够将Recipe,Ingredient和RecipeIngredient模型绑定到表格上。
设置我的视图和控制器方法将非常感谢任何帮助!在此先感谢:)
这是我的模型类,视图模型,控制器方法。 不幸的是,我没有足够的声誉来发布图像,但这里是我的数据库图表的链接。 http://i44.tinypic.com/xp1tog.jpg。 我希望这是足够的细节,但如果需要更多,请告诉我。
public ActionResult CreateFullRecipe()
{
var recipeViewModel = new RecipeViewModel();
//Im getting a RecipeIngredients null error as well below..
recipeViewModel.RecipeIngredients.Add(new RecipeIngredient());
return View(recipeViewModel);
}
public class Recipe
{
public int RecipeID { get; set; }
public string RecipeName { get; set; }
public string Description { get; set; }
public int? PrepTime { get; set; }
public int? CookTime { get; set; }
public string ImageURL { get; set; }
public virtual ICollection<RecipeTag> RecipeTags { get; set; }
public virtual ICollection<Rating> Ratings { get; set; }
public virtual ICollection<RecipeStep> RecipeSteps { get; set; }
public virtual ICollection<RecipeIngredient> RecipeIngredients { get; set; }
}
public class Ingredient
{
public int IngredientID { get; set; }
public string IngredientName { get; set; }
public virtual ICollection<RecipeIngredient> RecipeIngredients { get; set; }
}
public class RecipeIngredient
{
public int RecipeIngredientID { get; set; }
public string IngredientDesc { get; set; }
public string Amount { get; set; }
public int RecipeID { get; set; }
public int? IngredientID { get; set; }
public virtual Recipe Recipe { get; set; }
public virtual Ingredient Ingredient { get; set; }
}
public class RecipeViewModel
{
public Recipe Recipe { get; set; }
public Ingredient Ingredient { get; set; }
public ICollection<RecipeIngredient> RecipeIngredients { get; set; }
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Recipe</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Recipe.RecipeName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Recipe.RecipeName)
@Html.ValidationMessageFor(model => model.Recipe.RecipeName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Ingredient.IngredientName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Ingredient.IngredientName)
@Html.ValidationMessageFor(model => model.Ingredient.IngredientName)
</div>
<ul>
@foreach (var recipeingredient in Model.RecipeIngredients)
{
<li>
@recipeingredient.Ingredient.IngredientName
</li>
}
</ul>
答案 0 :(得分:0)
您不需要任何其他工具包/工具就可以执行此操作。您拥有MVC和JQuery所需的一切。下面是一篇关于模型绑定的精彩文章。它解释了如何绑定类列表。我建议阅读整篇文章。如果是我,我会开始简单,只需绑定其中一个类,然后添加一个视图模型,然后是一个类/实体的集合
答案 1 :(得分:0)
ViewModel模式不适用于多个模型。您应该只在视图中使用一个强类型模型(可能包含您想要使用的多个模型),然后在控制器中使用您想要应用CRUD的数据填充该视图模型。