public async Task <IActionResult> Create([Bind("Name,Description,ImagePath")] PirateGroup pirateGroup, string[] selectedPersons) { if (_context.PirateGroups.Any(group => group.Name == pirateGroup.Name)) { ViewBag.NameExists = _localizer["Name '{0}' already exists.", pirateGroup.Name]; PopulateAssignedPerson(selectedPersons); return(View(pirateGroup)); } if (ModelState.IsValid) { // Try to upload file if (!(await TryUploadFile(pirateGroup))) { PopulateAssignedPerson(selectedPersons); return(View(pirateGroup)); } // Update persons pirateGroup.Persons = new List <Person>(); foreach (var personIdStr in selectedPersons) { int personId = int.Parse(personIdStr); var person = _context.Persons.SingleOrDefault(p => p.Id == personId); pirateGroup.Persons.Add(person); person.PirateGroup = pirateGroup; } // Save DB _context.Add(pirateGroup); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } PopulateAssignedPerson(selectedPersons); return(View(pirateGroup)); }
public async Task <IActionResult> Create([Bind("Name,Nickname,Description,RewardMoney,Race,Sex,Birthday,FeatureType,Title,PirateGroupID,ImagePath")] Person person, string[] selectedFruits, string[] selectedWeapons, string PirateGroupID) { if (_context.Persons.Any(p => p.Name == person.Name)) { ViewBag.NameExists = _localizer["Name '{0}' already exists.", person.Name]; PopulateAssignedFruit(selectedFruits); PopulateAssignedWeapon(selectedWeapons); return(View(person)); } if (ModelState.IsValid) { // Try to upload file if (!(await TryUploadFile(person))) { PopulateAssignedFruit(selectedFruits); PopulateAssignedWeapon(selectedWeapons); return(View(person)); } // Update fruits person.FruitPossessions = new List <FruitPossession>(); foreach (var fruitIdStr in selectedFruits) { int fruitId = int.Parse(fruitIdStr); // 多对多关系,指定了Id,会自动绑定object的值。此处new FruitPossession时,只设置了PersonID和FruitID,而Person和Fruit对象没有指定,但是会自动绑定。 person.FruitPossessions.Add(new FruitPossession { PersonID = person.Id, FruitID = fruitId }); } // Update weapons person.WeaponPossessions = new List <WeaponPossession>(); foreach (var weaponIdStr in selectedWeapons) { int weaponId = int.Parse(weaponIdStr); person.WeaponPossessions.Add(new WeaponPossession { PersonID = person.Id, WeaponID = weaponId }); } // Reward money if (person.RewardMoney == null) { person.RewardMoney = 0; } // Save DB _context.Add(person); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } PopulateAssignedFruit(selectedFruits); PopulateAssignedWeapon(selectedWeapons); return(View(person)); }
public async Task <IActionResult> Create([Bind("Name,Description,ImagePath")] Weapon weapon) { if (_context.Weapons.Any(w => w.Name == weapon.Name)) { ViewBag.NameExists = _localizer["Name '{0}' already exists.", weapon.Name]; return(View(weapon)); } if (ModelState.IsValid) { // Try to upload file if (!(await TryUploadFile(weapon))) { return(View(weapon)); } // Save DB _context.Add(weapon); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(weapon)); }
public async Task <IActionResult> Create([Bind("Name,Type,Ability,Description")] Fruit fruit) { // Check if name already exists if (_context.Fruits.Any(f => f.Name == fruit.Name)) { ViewBag.NameExists = _localizer["Name '{0}' already exists.", fruit.Name]; return(View(fruit)); } if (ModelState.IsValid) { // Try to upload file if (!(await TryUploadFile(fruit))) { return(View(fruit)); } // Save DB _context.Add(fruit); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(fruit)); }