所以我有一个包含标签列表List<Tag> tags {get; set;}
public class BlogVM
{
public List<Blog> Blogs { get; set; }
public List<Tag> Tags { get; set; }
}
private EFMTMContext db = new EFMTMContext();
// GET: /Blog/
public ActionResult Index()
{
BlogVM viewModel = new BlogVM();
viewModel.Blogs = db.Blogs.ToList();
viewModel.Tags = db.Tags.ToList();
return View(viewModel);
}
标签数据库存储在viewModel.Tags中并传递到视图中。
我遇到的问题是使用Html.DropDownList显示它们。显示的是
EFTest.EntityFramwork.Tag,EFTest.EntityFramwork.Tag,EFTest.EntityFramwork.Tag。
(Namespace.Folder.Tag)我期待填充下拉列表
足球,橄榄球,网球等
@model EFManyToManyTest.ViewModels.BlogVM
@Html.DropDownList("tags", new SelectList(Model.Tags), "---", false)
从viewmodel访问每个标记的正确方法是什么?
希望有人可以提供帮助。 谢谢!
我想补充一下,我可以使用
遍历Model.Tags的内容@foreach (var item in Model.Tags)
{
@item.Name
}
没问题。这是有效的,它只是下拉列表中没有
现在可以使用
public class Tag
{
public int **TagID** { get; set; }
public string **Name** { get; set; }
public List<Blog> Blogs { get; set; }
}
@Html.DropDownList("tags", new SelectList(Model.Tags, **"TagID"**, **"Name"**), "---", false)
TagID,因为那是类定义中的ID属性
答案 0 :(得分:2)
您没有指定值和文本字段,请查看SelectList
的{{3}}构造函数:
public SelectList(
IEnumerable items,
string dataValueField,
string dataTextField
)
例如
@Html.DropDownList("tags", new SelectList(Model.Tags, "Id", "Name"), "---", false)