2017-03-27 10 views
0

私は2つのテーブルを持っていますtblProduct & tblImagesです。 tblImagesは製品用に複数のイメージを持ち、tblProductに関連する外部キーを持ちます。私は、複数のテーブルにデータを挿入する際に問題があります。ASP内の複数のテーブルにデータを挿入する方法。 NET MVC。エンティティフレームワーク

これが私の見解コードです:

<!-- Text Boxes and dropdown lists for tblProduct above and below is for adding files to tblImages--> 
<div class="col-md-10"> 
    <input multiple type="file" id="file" name="file" /> 
</div> 

、ここでは私のコントローラのコードです:

public ActionResult AddProduct_Post([Bind(Include = "productName, productDescription, productPrice, productCategory")]tblProduct tblProduct,List<HttpPostedFileBase> file) 
{ 
    List<tblImage> prodImages = new List<tblImage>(); 
    var path = ""; 

    foreach (var item in file) 
    { 
     if (item != null) 
     { 
      tblImage img = new tblImage(); 
      img.ImageFile = new byte[item.ContentLength]; 
      img.ImageName = string.Format(@"{0}.JPG", Guid.NewGuid()); 
      img.vend_ID = Convert.ToInt32(Session["userID"]); 

      item.InputStream.Read(img.ImageFile, 0, item.ContentLength); 

      path = Path.Combine(Server.MapPath("~/Content/img"), img.ImageName); 
      item.SaveAs(path); 
      prodImages.Add(img); 
     } 
    } 

    tblProduct.venodrID = Convert.ToInt32(Session["userID"]); 
    tblProduct.tblImages = prodImages; 

    if (ModelState.IsValid) 
    { 
     db.tblProducts.Add(tblProduct); 
     db.SaveChanges(); 

     int latestProdID = tblProduct.productID; 

     foreach (tblImage tblImg in tblProduct.tblImages) 
     { 
      tblImg.prod_ID = latestProdID; 
      db.Entry(tblImg).State = EntityState.Modified; 
     } 

     db.SaveChanges(); 

     return RedirectToAction("DashBoard"); 
    } 

    ViewBag.productCategory = new SelectList(db.tblCategories, "categoryID", "categoryName"); 
    ViewBag.vendorGender = new SelectList(db.tblGenders, "genderId", "genderName"); 

    return View(); 
} 

私はModelState.IsValidにブレークポイントを入れて、それがあれば条件内で行っていないと戻っていますデータを転記することなく同じビューを表示できます。親切にこの問題に

PSを解決する方法を教えて:私はASP.NET MVC

+1

本当にデータやEntity Frameworkの保存に関する質問がないので、 'ModelState.IsValid'はfalですこの時点では? – mason

+0

この回答に記載されているコードを使用して、ModelState.IsValidがfalseを返す理由を理解してください。 [ModelStateのどのキーにエラーがあるかを調べる方法](http://stackoverflow.com/questions/15296069/how-to-figure-out-which-key-of-modelstate-has-error/15296109#15296109)。 – Shyju

答えて

0

[Bind(Include =

に新しいですあなたができるあなたがアクションメソッドにバインドチェックパラメータを使用すると、定義されたものを似ていますその他のビューでは、バインド属性を削除して実際に何がエラーであるのかを調べることができます。

関連する問題