如何获取下拉列表选择的值

时间:2014-12-11 11:27:23

标签: c# asp.net-mvc drop-down-menu

我是MVC的新手。到目前为止,我成功地从下拉列表中绑定了数据库中的数据。

如何获取所选值并将其传递给Controller以保存在数据库中?

这是我到目前为止所做的事情:

查看:

@Html.DropDownList("State", null, new { @class = "dropdown-toggle col-md-9 form-control" })

CONTOLLER :(这是下拉列表中数据绑定的方式)

  IEnumerable<SelectListItem> states = db.RefState
            .Select(s => new SelectListItem
            {
                Value = s.ID.ToString(),
                Text = s.Name
            });


        ViewBag.AddressType = types;
        ViewBag.State = states;
        return View();

这是我将其保存在数据库中的方式:

    public ActionResult NewAddress(Address data)
    {
        if(ModelState.IsValid)
        {
            var addressData = new Address()
            {
                ZipCode = data.ZipCode,
                StreetNo = data.StreetNo,
                StreetName = data.StreetName,
                Unit = data.Unit,
                Additional = data.Additional,
                Town = data.Town,
                City = data.City,
                StateID = ?,  
                Description = data.Description,
                VendorCode = data.VendorCode

            };

            db.Address.Add(addressData);
            db.SaveChanges();
            ModelState.Clear();
            data = null;
            ViewBag.Message = "Address succesfully added";
            return RedirectToAction("DeliveryInformation", "DeliveryDetail");
        }

        return View(data);
    }

1 个答案:

答案 0 :(得分:2)

在您的控制器方法NewAddress中添加另一个参数FormCollection formCollection。

现在尝试:

StateID = formCollection["State"]

或者,将下拉列表的name属性更改为StateID而不是state也可能更清晰。

@Html.DropDownList("StateID", null, new { @class = "dropdown-toggle col-md-9 form-control" })

MVC只会将控件的值映射到参数的属性,如果它的name属性与参数的属性名称具有完全相同的值。