我目前正在使用ViewBag从View中获取数据以更新我的模型。我正在使用一个下拉列表,我从中获取所选项目,并在我的控制器中使用选择更新我的“客户模型”。我知道这不是一个好方法...请告诉我如何使用下拉列表选项更新我的“客户模型”,而不使用formcollection参数。
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Customer customer, FormCollection form)
{
if (ModelState.IsValid)
{
// Get selectected title from dropdownlist
customer.Title = form["TitleDropDownList"];
db.Customers.Add(customer);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(customer);
}
查看
<tr>
<td>
@Html.LabelFor(model => model.Title)
</td>
<td>
@Html.DropDownList("TitleDropDownList")
@Html.ValidationMessageFor(model => model.Title)
</td>
</tr>
我的获取方法是......
public ActionResult Create()
{
// Create title dropdownlist list for new customers
List<SelectListItem> titleDropDownList = new List<SelectListItem>();
titleDropDownList.Add(new SelectListItem { Text = "Mr", Value = "Mr" });
titleDropDownList.Add(new SelectListItem { Text = "Mrs", Value = "Mrs" });
titleDropDownList.Add(new SelectListItem { Text = "Miss", Value = "Miss" });
titleDropDownList.Add(new SelectListItem { Text = "Ms", Value = "Ms" });
ViewBag.TitleDropDownList = titleDropDownList;
return View();
}
答案 0 :(得分:0)
如果您将方法更改为静态并返回List
public static List<SelectListItem> Create(){
//Build List
return titleDropDownList;
}
您可以将视图上的下拉列表更改为
@Html.DropDownListFor(x => x.Title, PathToController.Create(), "Select One")
希望这有帮助。