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
本当にデータやEntity Frameworkの保存に関する質問がないので、 'ModelState.IsValid'はfalですこの時点では? – mason
この回答に記載されているコードを使用して、ModelState.IsValidがfalseを返す理由を理解してください。 [ModelStateのどのキーにエラーがあるかを調べる方法](http://stackoverflow.com/questions/15296069/how-to-figure-out-which-key-of-modelstate-has-error/15296109#15296109)。 – Shyju