コード例 #1
0
ファイル: c#-example2.cs プロジェクト: fffiiifffiiiff/example
        public override ActionResult PostEdit([ModelBinder(typeof(VehicleTrailerBinder))] VehicleModel viewModel)
        {
            return(DataAccess.Work().Get(() =>
            {
                TypeDescriptor
                .GetProperties(viewModel)
                .Cast <PropertyDescriptor>()
                .Where(p => p.HasAttribute <VehicleTypeAttribute>())
                .Select(p => new { Property = p, Attribute = p.Attributes <VehicleTypeAttribute>().First() })
                .Where(x => (x.Attribute.VehicleType & (VehicleType)viewModel.VehicleType) == 0)
                .ToList()
                .ForEach(x =>
                {
                    x.Property.SetValue(viewModel, null);
                });

                if (ModelState.IsValid)
                {
                    IList <VehicleTrailerModel> trailers = new List <VehicleTrailerModel>();

                    var model = ViewModelToModel(viewModel);

                    TrailerRep.SetParent(model);

                    TrailerRep.DeleteAll();

                    foreach (var item in viewModel.Trailers)
                    {
                        var trailer = TrailerRep.Create();
                        Mapper.Map(item, trailer);
                        TrailerRep.Save(trailer);
                        Mapper.Map(trailer, item);
                        trailers.Add(item);
                    }

                    Repository.Update(model);
                    viewModel = ModelToViewModel(model);

                    viewModel.Trailers = trailers;
                }

                return View(EditName, viewModel);
            }));
        }
コード例 #2
0
ファイル: c#-example2.cs プロジェクト: fffiiifffiiiff/example
        public override ActionResult PostCreate([ModelBinder(typeof(VehicleTrailerBinder))] VehicleModel viewModel)
        {
            return(DataAccess.Work().Get(() =>
            {
                if (ModelState.IsValid)
                {
                    var trailers = viewModel.Trailers;
                    var model = ViewModelToModel(viewModel);
                    Repository.Save(model);
                    viewModel = ModelToViewModel(model);

                    TrailerRep.SetParent(viewModel.Id);
                    foreach (var item in trailers)
                    {
                        var trailer = TrailerRep.Create();
                        Mapper.Map(item, trailer);
                        TrailerRep.Save(trailer);
                        Mapper.Map(trailer, item);
                        viewModel.Trailers.Add(item);
                    }
                }
                return View(CreateName, viewModel);
            }));
        }