// GET: 显示上传物品的表单 // 修改时间: 2019年5月8日 16点03分 public ActionResult UploadThings(int?id) { if (id != null) { using (SSDBEntities db = new SSDBEntities()) { //查找id对应的受助请求 Quests q = db.Quests.Where(x => x.Id == id.Value).FirstOrDefault(); //查找受助方 Users qu = db.Users.Where(x => x.UserId == q.ReceiverId).FirstOrDefault(); //新建视图模型 UploadThingsViewModel res = new UploadThingsViewModel(); //给视图模型赋值 res.Quest = q; res.Receiver = qu; res.tName = q.Name; res.tType = q.Type; return(View(res)); } } return(View()); }
public ActionResult UploadThings(UploadThingsViewModel model, int?qId) { //获取当前用户的Id int usrId = (int)HttpContext.Session["usrId"]; int tId = 0; if (ModelState.IsValid) { //新建Things Things t = new Things(); t.DonatorId = usrId; t.Name = model.tName; t.Type = model.tType; t.Detail = model.tDetail; t.ReleaseTime = DateTime.Now; t.Status = qId != null ? "已接受捐赠" : "正在审核中";//如果当前有匹配受助请求,则跳过审核 //文件存储到目录下 foreach (var imgFile in model.Image) { if (imgFile != null && imgFile.ContentLength > 0) { string extension = Path.GetExtension(imgFile.FileName); if (extension == ".jpg" || extension == ".png" || extension == ".gif") { string phicyPath = PublicFunction.GetPhicyPath(); //创建Upload文件夹,如果有则不创建 Directory.CreateDirectory(phicyPath); //文件名与路径 var fileName = Path.GetFileName(imgFile.FileName); var filePath = phicyPath + fileName; //防止文件重名 while (System.IO.File.Exists(filePath)) { Random rand = new Random(); fileName = rand.Next().ToString() + "-" + fileName; filePath = phicyPath + fileName; } //存储文件到文件目录 imgFile.SaveAs(filePath); //计算图片的哈希值 t.ImageHash = MainHash(filePath); //保存提交的图片URL至数据库 t.ImageUrl = fileName; } else { ModelState.AddModelError("Image", "请上传正确格式的图片(.jpg .png .gif)"); return(View(model)); } } } //向数据库新建元组,并获取新Things的id using (SSDBEntities db = new SSDBEntities()) { db.Things.Add(t); db.SaveChanges(); tId = t.Id; } //如果当前有匹配受助请求,再新建一条匹配元组 //并改变受助请求状态 if (qId != null) { //新建ThingsQuests ThingsQuests tq = new ThingsQuests(); tq.ThingId = tId; tq.QuestId = qId.Value; tq.Time = DateTime.Now; //向数据库新建元组,改变受助请求状态 using (SSDBEntities db = new SSDBEntities()) { db.ThingsQuests.Add(tq); Quests q = db.Quests.Where(x => x.Id == qId.Value).FirstOrDefault(); q.Status = "已接受受助"; db.Entry(q).State = EntityState.Modified; db.SaveChanges(); } } //提交成功,跳转至用户主页 return(RedirectToAction("MyThingsList")); } //模型报错,返回当前页面 return(RedirectToAction("UploadThings", new { id = qId })); }