문제

Im working with MVC 4 (razor).

I am using dropdownlist instead of dropdownlistFor because the dropdownlist can display selected value by retrieving data from database. So I need to know how to pass value by selecting a value from dropdownlist to Action parameter (Edit) without using dropdownlistfor model. Is there a way to solve it? I see VmCarList of ViewModel is null.

ViewModels

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

Controller

[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);
    }

View

    @model CarProgram.Models.ViewModels

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

Controller

    [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();
        }
    }
도움이 되었습니까?

해결책

If you use @Html.DropDownList("CarList", (SelectList)ViewBag.CarNames), you should add CarList to action as parameter. Or if you want to receive car value from model, you should use DropDownListFor:

@Html.DropDownListFor(model => model.VmCarData, ViewBag.CarNames as IEnumerable<SelectListItem>, "-Select Car-", new { @id = "carDDL" })
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top