填充下拉框与数据库数据
本文关键字:数据库 数据 填充 | 更新日期: 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。