【发布时间】:2015-05-28 02:01:39
【问题描述】:
我很难在我的创建视图中为相关模型/表设置下拉列表。 My Guest 模型通过以下方式引用 PersonPrefix 模型:
客座模特:
public virtual PersonPrefix Prefix { get; set; }
PersonPrefix 模型:
public class PersonPrefix
{
[Key]
public int PersonPrefixID { get; set; }
[StringLength(6)]
public string Abbreviation { get; set; }
[StringLength(255)]
public string Name { get; set; }
public virtual ICollection<Guest> Guests { get; set; }
}
为了能够从数据库中获取数据并将其显示在下拉列表中,我做了以下操作:
控制器:
public ActionResult Create()
{
ViewBag.PersonPrefixes = new SelectList(db.PersonPrefixes, "PersonPrefixID", "Abbreviation");
return View();
}
我已经在帖子中添加了前缀对象
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "GuestID,FirstName,MiddleName,Surname,BirthDate,SelectedPrefix")] Guest guest)
{
if (ModelState.IsValid)
{
db.Guests.Add(guest);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(guest);
}
这是目前视图中的相关代码,但它没有将值传递给控制器:
<div class="form-group">
@Html.LabelFor(model => model.Prefix, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10" >
@*@Html.DropDownListFor(m => m.Prefix, new SelectList(ViewBag.PersonPrefixes, "Value", "Text", 1))*@
@Html.DropDownListFor(m => m.Prefix,
new SelectList(ViewBag.PersonPrefixes, "Value", "Text", 1))
</div>
</div>
感谢您的帮助!!
【问题讨论】:
-
您不能将
<select>绑定到复杂对象(这是Prefix的属性)。在您的情况下,您将需要使用具有属性(例如)int SelectedPrefix的视图模型并绑定到该属性。 -
谢谢!不过,我是 MVC 的新手,你能指出一个像样的例子吗?
-
检查这个例子:dotnetfiddle.net/PtMRVw
标签: asp.net-mvc entity-framework viewbag dropdownlistfor