填充下拉框与数据库数据

本文关键字:数据库 数据 填充 | 更新日期: 2023-09-27 18:11:44

已经成功地使这个工作了。不出所料,它比我做的要简单。希望这能在将来的某个时候拯救那些想做同样事情的人。已将以下代码修改为工作代码。

谢谢大家的帮助。

局部视图返回下拉列表:

    @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; }
}

填充下拉框与数据库数据

我不知道我是否在你的代码中缺少一些东西,但我看不到任何一段你正在填充ViewBag的代码。分类收集。在文档中,第二个参数更多的是关于拥有SelectListItem对象的Collection (IEnumerable),而不是拥有实体对象的SelectList集合。这会导致填充下拉控件时出现问题。

我注意到的下一件事是,第一个参数(表达式)是选择类别对象-我认为这是不可能的选择列表,它只存储值(键)和文本。你应该使用像'SelectedCategory'这样的整数属性

检查此代码应该是

@Html.DropDownListFor(model=>model.Category.CategoryName,ViewBag.Categories as SelectList,"-- Select Category--")

也在控制器设置ViewBag。