我是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);
}
答案 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属性与参数的属性名称具有完全相同的值。