现在设法让这个工作。正如所料,它比我制作它简单。希望这可以挽救那些希望将来某个时间做同样事情的人。将下面的代码修改为工作代码。
感谢所有人的帮助。
部分视图返回下拉列表:
@model Project.Models.Item
@Html.DropDownListFor(m=>m.CategoryId,new SelectList(ViewBag.CategoryList,"CategoryId","CategoryName"),"Select")
控制器:
[HttpGet]
public ActionResult Create()
{
ViewBag.CategoryList = db.Categorys.ToList();
ViewBag.DesignerList = db.Designers.ToList();
return View();
}
项目型号:
public class Item
{
public Item()
{
this.Images = new List<Image>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[ScaffoldColumn(false)]
public int ItemId { get; set; }
public int CategoryId { get; set; }
public int DesignerId { get; set; }
public int ImageId { get; set; }
[Required(ErrorMessage="Please Enter the Items Name ")]
[StringLength(150,MinimumLength=2)]
public string ItemName { get; set; }
[Required(ErrorMessage = "Price Cannot be Negative ")]
[Range(0,999999.99)]
public decimal ItemPrice { get; set; }
[StringLength(1000,MinimumLength=2)]
public string ItemDescription { get; set; }
[Range(4,22)]
public int ItemSize { get; set; }
//Files Being Uploaded by the User
public HttpPostedFileBase[] Files { get; set; }
public virtual Category Category { get; set; }
public virtual Designer Designer { get; set; }
public virtual List<OrderDetail> OrderDetails { get; set; }
public virtual List<Image> Images { get; set; }
}
类别模型:
public class Category
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[ScaffoldColumn(false)]
public int CategoryId { get; set; }
[Required(ErrorMessage="Must Supply a Category")]
[StringLength(250,MinimumLength=1)]
public string CategoryName { get; set; }
}
答案 0 :(得分:1)
我不知道我的代码中是否遗漏了某些内容,但是我看不到任何代码填充ViewBag.Categories集合。 在documentation中,第二个参数更多地是关于具有SelectListItem对象的Collection(IEnumerable)而不是具有实体对象的SelectList集合。这会导致填充下拉控件时出现问题。
我注意到的下一件事是第一个参数(表达式)是选择Category对象 - 我认为使用仅存储Value(Key)和Text的select列表是不可能的。你应该在这里使用名为'SelectedCategory'
的整数属性答案 1 :(得分:0)
检查此代码 它应该是
@Html.DropDownListFor(model=>model.Category.CategoryName,ViewBag.Categories as SelectList,"-- Select Category--")
也可以在控制器中设置ViewBag.Categories和您的数据库值。