C#MVC显示剃刀中视图模型的下拉列表

本文关键字:模型 下拉列表 视图 显示 剃刀 C#MVC | 更新日期: 2023-09-27 18:21:45

所以我有一个视图模型,它包含一个标签列表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,因为这是类定义

C#MVC显示剃刀中视图模型的下拉列表

中的ID属性

您没有指定值和文本字段,请查看SelectList:的构造函数

public SelectList(
    IEnumerable items,
    string dataValueField,
    string dataTextField
)

例如

@Html.DropDownList("tags", new SelectList(Model.Tags, "Id", "Name"), "---", false)