2014-03-19 241 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

相關問題