2014-03-19 196 views
0

我正在使用MVC 4(剃刀)。如何将选定的值(dropdownlist)传递给控制器​​参数?

我使用dropdownlist而不是dropdownlistFor,因为dropdownlist可以通过从数据库中检索数据来显示选定的值。所以我需要知道如何通过从dropdownlist中选择一个值到Action参数(Edit)来传递值,而不使用dropdownlistfor model。有没有办法解决它?我看到ViewModel的VmCarList为空。

的ViewModels

public IEnumerable<Cars> VmCarList { get; set; } 
public CarData VmCarData { get; set; } 

控制器

[HttpGet] 
public ActionResult Edit(int id) 
    { 


     _viewModels.VmCarList = Repository.LoadAllCarNames(); 

     string selectedCar = (from car in _viewModels.CarList 
          where car.carId == id 
          select car.Name).First(); 

     ViewBag.CarNames = new SelectList(_viewModels.CarList, "CarName", "CarName", selectedCar); 

     return View(_viewModels); 
    } 

查看

@model CarProgram.Models.ViewModels 

    @Html.DropDownList("CarList", (SelectList)ViewBag.CarNames) 

控制器

[HttpPost] 
    public ActionResult Edit(int id, ViewModels data) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       var car = new CarData(); 
       UpdateModel(car); 

       bool result = Repository.UpdateCar(car); 
      } 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

回答

5

如果使用@Html.DropDownList("CarList", (SelectList)ViewBag.CarNames),则应添加CarList作为参数。或者如果你想从模型中获得汽车价值,你应该使用DropDownListFor

@Html.DropDownListFor(model => model.VmCarData, ViewBag.CarNames as IEnumerable<SelectListItem>, "-Select Car-", new { @id = "carDDL" }) 
+0

我将CarList添加到参数中。有用!哇,那很容易。非常感谢!!! – user2857908

相关问题