所以我的Viewbag在我的创建剃刀视图中的下拉列表中使用了以下代码:
控制器
ViewBag.ActionTypes = new SelectList(query.AsEnumerable(), "ActionTypeID", "ActionTypeTitle");
然后我的剃刀做到了这一点;
@Html.DropDownList("ActionTypeID", (IEnumerable<SelectListItem>)ViewBag.ActionTypes)
我坚持要在Post方法中添加什么以及如何从下拉列表中获取值?
任何人都可以指出我正确的方向
答案 0 :(得分:1)
假设您有一个名为ActionType的模型:
public class ActionType
{
public int ActionTypeID { get; set; }
...
}
由于您的SelectList使用相同的属性名称,因此ModelBinder将负责设置正确的POSTed值:
new SelectList(query.AsEnumerable(), "ActionTypeID", "ActionTypeTitle");
--------------------------------------------^
请记住向您在Action中使用的Model类添加一个具有相同名称的属性:
-------------------------------v Add the property to this class.
[HttpPost]
public ActionResult Create(SomeModel model)
{
}
这是一个例子。想象一下,您已经由Entity Framework生成了以下实体:
Person Country
------- -------
PersonID CountryID
FullName Name
CountryID
[HttpPost]
public ActionResult Create(PersonModel model)
{
if (ModelState.IsValid)
{
DbEntities db = new DbEntities();
Person person = new Person();
person.FullName = model.FullName;
person.CountryID = model.CountryID; // This value is from the DropDownList.
db.AddToPersons(person);
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
// Something went wrong. Redisplay form.
return View(model);
}
只需将POSTed ID值设置为实体对象的外键属性即可。