public ActionResult Edit(NewsViewModel newsViewModel, HttpPostedFileBase ImageFile) { if (ModelState.IsValid) { var newNews = db.News.Find(newsViewModel.NewsID); if (newNews == null) { return(HttpNotFound()); } // save image to disk // /NewsImages/imagename.png if (ImageFile != null) { // create relative path string relativePath = "/NewsImages/" + DateTime.Now.Ticks.ToString() + "_" + ImageFile.FileName; // map the relative to physical path string physicalPath = Server.MapPath(relativePath); // check if the image folder exists string imageFolder = Path.GetDirectoryName(physicalPath); if (!Directory.Exists(imageFolder)) { Directory.CreateDirectory(imageFolder); } // save the image to physical path ImageFile.SaveAs(physicalPath); newsViewModel.ImageUrl = relativePath; } newsViewModel.UpdateNews(newNews); newNews.Categories.Clear(); //always check if the object null before usage if (newsViewModel.CategoryID != null) { foreach (var cID in newsViewModel.CategoryID) { var category = db.Categories.Find(cID); if (category != null) { newNews.Categories.Add(category); } } } db.Entry(newNews).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.UserID = new SelectList(db.Users, "UserID", "UserName", newsViewModel.UserID); return(View(newsViewModel)); }
public NewsPage() { InitializeComponent(); var vm = new NewsViewModel(Navigation, new NewsDataStore()); BindingContext = vm; vm.IsBusy = true; Task.Run(() => { vm.UpdateNews(); vm.IsBusy = false; }); }