我有两张桌子
1- P_Product
2- P_Imagepath
我想在P_Product表中存储输入数据,并根据第一个表的ID。我想用P_Product Id将图像存储到P_Imagepath表中。
我在这里试过,但它显示了一些错误
在Foreach循环中,它显示"新表达式需要(),[],{} 类型"和" item"它的节目不能无意中转换类型 System.web.HttpPostedFileBase到string
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(P_Product p_product,List<HttpPostedFileBase> Base)
{
if (ModelState.IsValid)
{
db.P_Product.Add(p_product);
db.SaveChanges();
P_Product product = db.P_Product.LastOrDefault();
int p = product.Id;
List<P_ImagePath>images=new List<P_ImagePath>
foreach(var item in Base)
{
P_ImagePath image=new P_ImagePath();
image.P_Id=p;
image.ImagePath=item;
images.Add(image);
}
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Cat_Id = new SelectList(db.P_Category, "Id", "Name", p_product.Cat_Id);
return View(p_product);
}
答案 0 :(得分:0)
//this line has syntax error - missing "();"
//correct form: List<P_ImagePath>images=new List<P_ImagePath>();
List<P_ImagePath>images=new List<P_ImagePath>
你的 image.ImagePath 可能是字符串(它是),而 item 是来自基本列表的项目,这意味着该项目的类型为 HttpPostedFileBase (方法参数),因此您无法将其转换为字符串。
您可以做的是从项目中查找该文件的路径。所以,试试这个:
...
foreach(var item in Base)
{
P_ImagePath image=new P_ImagePath();
image.P_Id=p;
image.ImagePath= Path.GetFileName(item.FileName);
images.Add(image);
}