所以我有一个视图模型,它包含一个标签列表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.EentityFramwwork.Tag,EFTest.Entity Framwork.Tag。
(Namespace.Folder.Tag)我本来希望下拉列表填充
足球、橄榄球、网球等
@model EFManyToManyTest.ViewModels.BlogVM
@Html.DropDownList("tags", new SelectList(Model.Tags), "---", false)
从视图模型访问每个标记的正确方法是什么?
希望有人能帮忙。谢谢
我想补充一下,我可以循环浏览Model的内容。标签使用,
@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,因为这是类定义
您没有指定值和文本字段,请查看SelectList
:的构造函数
public SelectList(
IEnumerable items,
string dataValueField,
string dataTextField
)
例如
@Html.DropDownList("tags", new SelectList(Model.Tags, "Id", "Name"), "---", false)