我想制作一个显示每个类别ID和名称的下拉列表。不幸的是,当我开始时,它显示以下错误: “没有类型'IEnumerable'的ViewData项具有键'......'。”
在视图中:
@model WebApplication1.Models.Zoekitem
@{
ViewBag.Title = "Create";
}
@Html.DropDownList("list1", ViewBag.categorieBag as SelectList, "-- Select --")
在控制器中:
FAQDBConnection FAQconnection = new FAQDBConnection();
var getlist = FAQconnection.Categorie.ToList();
SelectList list = new SelectList(getlist, "ID", "Naam");
ViewBag.categorieBag = list;
在模型中:
public class Categorie
{
[Key]
public int ID { get; set; }
public string Naam { get; set; }
}
public class FAQDBConnection : DbContext
{
public FAQDBConnection()
: base("FAQDBConnection")
{
//disable initializer
Database.SetInitializer<FAQDBConnection>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public DbSet<Categorie> Categorie { get; set; }
public DbSet<Zoekitem> Zoekitem { get; set; }
public DbSet<ZoekitemCategorie> ZoekitemCategorie { get; set; }
}
每次启动程序时,都会说下拉列表中没有给出第一个字符串的viewdata。在这种情况下:“list1”。
您知道,@model WebApplication1.Models.Zoekitem
适用于创建页面中包含的其他一些文本框。
提前致谢!
答案 0 :(得分:0)
尝试使用IEnumerable<SelectListItem>
@Html.DropDownList("list1", ViewBag.categorieBag as IEnumerable<SelectListItem>, "-- Select --")
答案 1 :(得分:0)
好的,所以在与同事谈论之后,我们设法解决了这个问题。
在我的SQL数据库中,我有第三个表,这个表用于配对来自另外两个表的id。
在我们的控制器中,我们在POST操作方法中有代码,这必须在GET操作方法中。
同样在我们的模型中,我们没有定义我们的键。请注意,在[Key]
中定义我们的密钥并不能自行完成。必须添加[Column(Order = 0)]
和[Column(Order = 1)]
来定义哪个更重要。
控制器:
// GET: Zoekitem/Create
public ActionResult Create()
{
FAQDBConnection FAQconnection = new FAQDBConnection();
var getlist = FAQconnection.Categorie.ToList();
SelectList list = new SelectList(getlist, "ID", "Naam");
ViewBag.categorieBag = list;
return View();
}
// POST: Zoekitem/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Zoekitem zoekitem, string catID, string catNaam)
{
if (ModelState.IsValid)
{
db.Zoekitem.Add(zoekitem);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(db.Categorie.ToList());
}
型号:
public class ZoekitemCategorie
{
[Key]
[Column(Order = 0)]
public int IDZ { get; set; }
[Key]
[Column(Order = 1)]
public int IDC { get; set; }
}
查看:
@Html.DropDownList("list1", ViewBag.categorieBag as IEnumerable<SelectListItem>, "-- Select --")
(随意纠正错误!)