【问题标题】:how to pass selected value (dropdownlist) to controller parameter?如何将选定值(下拉列表)传递给控制器​​参数?
【发布时间】:2014-03-19 12:10:21
【问题描述】:

我正在使用 MVC 4(剃须刀)。

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

视图模型

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

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-4 dropdownlistfor


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多