public ActionResult Address(int id = 0) { ViewBag.Edit = id != 0; List <CityType> types; using (var repository = new NHGetAllRepository <CityType>()) { types = repository.GetAll().ToList(); } var list = (IEnumerable <SelectListItem>) new SelectList(types, "id", "Name"); AddressDto address = new AddressDto(); if (id != 0) { using (var repository = new NHRepository <Address>()) { var t = repository.Get(id); address = new AddressDto() { Id = t.Id, House = t.House, Street = t.Street.Name, Country = t.Country.Name, Region = t.Region.Name, CityType = t.CityType.Id, City = t.City.Name }; } list = types.Select(x => new SelectListItem() { Text = x.Name, Selected = x.Id == address.CityType, Value = x.Id.ToString() }); } ViewData["CityType"] = list; return(View(address)); }
public ActionResult Address(AddressDto address) { List <CityType> types; using (var repository = new NHGetAllRepository <CityType>()) { types = repository.GetAll().ToList(); } var list = (IEnumerable <SelectListItem>) new SelectList(types, "Id", "Name"); ViewData["CityType"] = list; ViewBag.Edit = address.Id != 0; if (address.Country.IsNullOrEmpty()) { ModelState.AddModelError("Country", "Поле не может быть пустым"); } if (address.Region.IsNullOrEmpty()) { ModelState.AddModelError("Region", "Поле не может быть пустым"); } if (address.City.IsNullOrEmpty()) { ModelState.AddModelError("City", "Поле не может быть пустым"); } if (address.CityType == 0) { ModelState.AddModelError("CityType", "Поле не может быть пустым"); } if (address.Street.IsNullOrEmpty()) { ModelState.AddModelError("Street", "Поле не может быть пустым"); } if (address.House.IsNullOrEmpty()) { ModelState.AddModelError("House", "Поле не может быть пустым"); } if (!ModelState.IsValid) { return(View(address)); } var session = NHibernateHelper.OpenSession(); using (var tx = session.BeginTransaction()) { var country = session.Query <Country>().FirstOrDefault(x => x.Name == address.Country) ?? new Country() { Name = address.Country }; var region = session.Query <Region>().FirstOrDefault(x => x.Name == address.Region) ?? new Region() { Name = address.Region, Country = country }; var cityType = session.Query <CityType>().First(x => x.Id == address.CityType); var city = session.Query <City>().FirstOrDefault(x => x.Name == address.City) ?? new City() { Name = address.City, Region = region, CityType = cityType }; var street = session.Query <Street>().FirstOrDefault(x => x.Name == address.Street) ?? new Street() { Name = address.Street, City = city }; var entity = new Address() { Id = address.Id, House = address.House, Street = street, }; session.SaveOrUpdate(entity); tx.Commit(); } return(RedirectToAction("Index")); }