Speichern Viewmodel Daten auf der Datenbank ASP.NET MVC

Ich bin neu ASP.net MVC und bin mit einem viewmodel, anstatt viewbags zu füllen meine dropdowns, da ich gesehen habe die meisten Menschen empfehlen gegen Sie. Ich habe einen slick UI, das tut cascading dropdowns und autocompletes (hier nicht gezeigt), aber ich kann nicht scheinen, um meine Daten wieder in der Datenbank gespeichert.

Modelle:

   public partial class Car
    {
        public int CarID { get; set; }
        public string CarName { get; set; }
        public int ModelID { get; set; }
        public int ManufacturerID { get; set; }
        public int CarColorID { get; set; }
        public Nullable<decimal> Price { get; set; }
        public string Description { get; set; }

        public virtual CarColor CarColor { get; set; }
        public virtual Manufacturer Manufacturer { get; set; }
        public virtual CarModel CarModel { get; set; }
    }
   public partial class CarColor
    {
        public CarColor()
        {
            this.Cars = new HashSet<Car>();
        }

        public int ColorID { get; set; }
        public string ColorName { get; set; }

        public virtual ICollection<Car> Cars { get; set; }
    }
   public partial class CarModel
    {
        public CarModel()
        {
            this.Cars = new HashSet<Car>();
        }

        public int CarModelID { get; set; }
        public int ManufacturerID { get; set; }
        public string CarModelName { get; set; }

        public virtual ICollection<Car> Cars { get; set; }
        public virtual Manufacturer Manufacturer { get; set; }
    }
   public partial class Manufacturer
    {
        public Manufacturer()
        {
            this.Cars = new HashSet<Car>();
            this.Manufacturer1 = new HashSet<Manufacturer>();
            this.CarModels = new HashSet<CarModel>();
        }

        public int ManufacturerID { get; set; }
        public string ManufacturerName { get; set; }
        public Nullable<int> ParentID { get; set; }

        public virtual ICollection<Car> Cars { get; set; }
        public virtual ICollection<Manufacturer> Manufacturer1 { get; set; }
        public virtual Manufacturer Manufacturer2 { get; set; }
        public virtual ICollection<CarModel> CarModels { get; set; }
    }

ViewModel:

public class AnotherTestViewModel
    {
        public Car car { get; set; }

        public IEnumerable<SelectListItem> CarModels { get; set; }
        public IEnumerable<SelectListItem> Manufacturers { get; set; }
        public IEnumerable<SelectListItem> CarColors { get; set; }
    }

Controller:

public ActionResult Create()
        {
            var model = new AnotherTestViewModel();
            using (new CarTestEntities())
            {
                model.CarModels = db.CarModels.ToList().Select(x => new SelectListItem
                {
                    Value = x.CarModelID.ToString(),
                    Text = x.CarModelName
                });
                model.Manufacturers = db.Manufacturers.ToList().Select(x => new SelectListItem
                {
                    Value = x.ManufacturerID.ToString(),
                    Text = x.ManufacturerName
                });
                model.CarColors = db.CarColors.ToList().Select(x => new SelectListItem
                {
                    Value = x.ColorID.ToString(),
                    Text = x.ColorName
                });
            }
            return View(model);
        } 

        //
        //POST: /AnotherTest/Create

        [HttpPost]
        public ActionResult Create(AnotherTestViewModel model)
        {
                if (ModelState.IsValid)
                {
                    db.Entry(model).State = EntityState.Modified;
                    db.SaveChanges();
                    return RedirectToAction("Details", "AnotherTestViewModel", new { id = model.car.CarID });
                }
                return View();
        }

Sah ich ein paar Empfehlungen zu verwenden Automapper, weil EntityState.Geändert wird nicht funktionieren, aber ich bin mir nicht sicher, wie es zu konfigurieren, weil mit dem nachstehenden code hat nicht funktioniert.

Mapper.CreateMap<AnotherTestViewModel, Car>();
Mapper.CreateMap<Car, AnotherTestViewModel>();
var newCar = Mapper.Map<AnotherTestViewModel, Car>(model);

Irgendwelche Ideen?

InformationsquelleAutor Jim | 2013-04-30
Schreibe einen Kommentar