2014-10-03 27 views
0

我是编程新手,所以我还在学习。 我需要从一个视图添加项目到杂货店。但我无法获取数据来保存。 当我点击保存时,我没有收到任何异常,页面刚刚加载,但没有任何内容保存到 数据库。我可以得到一些帮助/指导我做错了什么?添加/更新相关数据ASP.NET MVC 5

数据类

public class Grocery 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 

     public virtual List<Item> Items { get; set; } 
    } 


    public class Item { 

     public int ItemId { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
} 

视图模型

public class GroceryViewModel 
{ 
    public Grocery Grocery { get; set; } 
    public virtual Item Item { get; set; } 

    public GroceryViewModel(int GroceryId) 
    { 
     using (var db = new MyContext()) 
     { 
     Grocery = db.Groceries 
       .Include("Items") 
       .SingleOrDefault(a => a.Id == GroceryId); 
     } 
    } 
} 

控制器

public ActionResult Edit(int GroceryId, GroceryViewModel groceryViewModel) 
    { 
     var model = new GroceryViewModel(GroceryId); 
     var plusItems = new Item 
     { 
      Name = groceryViewModel.Item.Name, 
      Description = groceryViewModel.Item.Description, 
     }; 

     db.Items.Add(plusItems); 
     db.SaveChanges(); 
     return RedirectToAction(model); 

查看

@model Project.Models.GroceryViewModel 

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Groceries</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Item.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Item.Name) 
      @Html.ValidationMessageFor(model => model.Item.Name) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Item.Description) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Item.Description) 
      @Html.ValidationMessageFor(model => model.Description) 
     </div> 

     <p> 
      <input type="submit" value="Add Item" /> 
     </p> 
    </fieldset> 

回答

0

尝试

using (var db = new MyContext()) 
    { 
     var grocery = db.Groceries.Single(a => a.Id == groceryId); 
     var plusItems = new Item 
     { 
      Name = groceryViewModel.Item.Name, 
      Description = groceryViewModel.Item.Description, 
     }; 

     grocery.Items.Add(plusItems); 
     db.SaveChanges(); 
    }