public IActionResult Create(Item item) { //Couldn't find a better way to do this, because when I click submit, it doesn't give me the item I want to get. if (ModelState.IsValid) { item.ItemType = Request.Form["TypeRadio"]; item.Title = Request.Form["Name"]; item.Description = Request.Form["Description"]; item.Price = Convert.ToDecimal(Request.Form["Price"]); item.Year = Convert.ToInt32(Request.Form["Year"]); item.Country = Request.Form["Country"]; item.Retailer = Request.Form["Retailer"]; item.Exclusive = Request.Form["Exclusive"]; item.Limited = Convert.ToInt32(Request.Form["Limited"]); item.ListID = Convert.ToInt32(Request.Form["List"]); if (item.ItemType == "Other") { item.ItemType = Request.Form["Type"]; } foreach (string s in collectionRepository.SeperateString(Request.Form["Tags"])) { item.tags.Add(new Tag() { Name = s, Type = "Tag" }); } foreach (string s in collectionRepository.SeperateString(Request.Form["Genres"])) { item.tags.Add(new Tag() { Name = s, Type = "Genre" }); } foreach (string s in collectionRepository.SeperateString(Request.Form["Finishes"])) { item.tags.Add(new Tag() { Name = s, Type = "Finish" }); } int counter = 0; foreach (string s in collectionRepository.SeperateString(Request.Form["Images"])) { string substring = ""; int lastIndex = s.LastIndexOf("."); if (lastIndex > 0) { substring = s.Substring(lastIndex).ToLower(); } if (substring == ".png" || substring == ".gif" || substring == ".jpg" || substring == ".jpeg") { counter++; item.images.Add(new Image() { ItemPicture = s, Position = counter }); } } userID = Convert.ToInt32(HttpContext.Session.GetInt32("UserID")); try { switch (item.ItemType) { case "Book": item.ItemBook = new Book(); item.ItemBook.Format = Request.Form["Format"]; item.ItemBook.Language = Request.Form["Language"]; item.ItemBook.Pages = Convert.ToInt32(Request.Form["Pages"]); collectionRepository.SaveItem(item, item.ItemBook); break; case "Case": item.ItemCase = new Case(); item.ItemCase.CaseType = Request.Form["CaseType"]; item.ItemCase.Cover = Request.Form["Cover"]; if (Convert.ToInt32(Request.Form["4K Blu-Ray"]) != 0) { item.ItemCase.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["4K Blu-Ray"]), Format = "4K Blu-Ray" }); } if (Convert.ToInt32(Request.Form["3D Blu-Ray"]) != 0) { item.ItemCase.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["3D Blu-Ray"]), Format = "3D Blu-Ray" }); } if (Convert.ToInt32(Request.Form["Blu-Ray"]) != 0) { item.ItemCase.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["Blu-Ray"]), Format = "Blu-Ray" }); } if (Convert.ToInt32(Request.Form["DVD"]) != 0) { item.ItemCase.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["DVD"]), Format = "DVD" }); } if (Convert.ToInt32(Request.Form["CD"]) != 0) { item.ItemCase.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["CD"]), Format = "CD" }); } collectionRepository.SaveItem(item, item.ItemCase); break; case "Media": item.ItemMedia = new Media(); item.ItemMedia.MediaType = Request.Form["MediaType"]; item.ItemMedia.Runtime = Convert.ToInt32(Request.Form["Runtime"]); item.ItemMedia.Platform = Request.Form["Platform"]; if (Convert.ToInt32(Request.Form["4K Blu-Ray"]) != 0) { item.ItemMedia.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["4K Blu-Ray"]), Format = "4K Blu-Ray" }); } if (Convert.ToInt32(Request.Form["3D Blu-Ray"]) != 0) { item.ItemMedia.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["3D Blu-Ray"]), Format = "3D Blu-Ray" }); } if (Convert.ToInt32(Request.Form["Blu-Ray"]) != 0) { item.ItemMedia.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["Blu-Ray"]), Format = "Blu-Ray" }); } if (Convert.ToInt32(Request.Form["DVD"]) != 0) { item.ItemMedia.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["DVD"]), Format = "DVD" }); } if (Convert.ToInt32(Request.Form["CD"]) != 0) { item.ItemMedia.Discs.Add(new Disc() { Amount = Convert.ToInt32(Request.Form["CD"]), Format = "CD" }); } foreach (string key in Request.Form.Keys.Where(k => k.StartsWith("Discs_"))) { item.ItemMedia.Discs.Add(new Disc { RelationID = Convert.ToInt32(Request.Form[key]) }); } collectionRepository.SaveItem(item, item.ItemMedia); break; default: collectionRepository.SaveItem(item); break; } return(RedirectToAction("Details", new { id = item.ID })); } catch (Exception e) { string message = e.Message; return(View("Error", "Database")); } } return(View(item)); }