ViewModel从下拉列表中保存选定的值

时间:2015-02-22 12:09:04

标签: c# entity-framework-4

我有一个下拉列表 - 很难。这是一个dropdonwlinst用户可以选择一个值(简单,困难),但如果我选择一个值,该值不会保存到数据库。奇怪的是我还有Country列表,并且该值保存到数据库中。如果我手动将值放在数据库中 - 对于困难,值会显示在视图中

MODELVIEW:

public RouteViewModel()
        {
            Countries = new List<SelectListItem>();
            DifficultGrades = new List<SelectListItem>();

        }
        public int Id { get; set; }

        [Required(ErrorMessage = "You need to give it a name")]
        public string Name { get; set; }

        public int SelectedValue { get; set; }


        public int SelectedId { get; set; }

        public IEnumerable<SelectListItem> Countries { get; set; }
        public IEnumerable<SelectListItem> DifficultGrades { get; set; }
    }

 public class Difficult
    {
        [Key]
        public int DifficultId { get; set; }
        public string DifficultName { get; set; }       
        public virtual ICollection<Route> Routes { get; set; }

    }

public class Route
    {

        [Key]
        public int routeID { get; set; }
        public string Name { get; set; }

        public int? UserProfileID { get; set; }
        public int? CountryID { get; set; }
        public int? DifficultGradeID { get; set; }



        public virtual UserProfile userProfile { get; set; }
        public virtual Country country { get; set; }
        public virtual Difficult difficult { get; set; }
    }

 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(RouteViewModel routeViewModel )
        {

            try
            {
                if (ModelState.IsValid)
                {

                    var route = new Route();
                    UpdateRoute(route, routeViewModel);
                    db.Routes.Add(route);

                    db.SaveChangesAsync();
                    return RedirectToAction("Index");
                }
            }
            catch (RetryLimitExceededException /* dex */)
            {

                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
            }


            ViewBag.Id = new SelectList(db.countries, "Id", "country_name", routeViewModel.Id);
            ViewBag.DifficultId = new SelectList(db.difficulties, "DifficultId", "DifficultName", routeViewModel.Id);
            return View(new RouteViewModel());
        }

和更新方法:

public void UpdateRoute(Route route, RouteViewModel routeViewModel  )
        {
            route.routeID = routeViewModel.Id;
            route.Name = routeViewModel.Name;
            route.CountryID = routeViewModel.Id;
            route.DifficultGradeID = routeViewModel.Id;

            // climb.country.country_name = ModelViewClimb.Name;

        }

谢谢

0 个答案:

没有答案