MVC视图-无法在选择下拉列表中填充列表

时间:2019-07-03 04:27:26

标签: c# asp.net-core razor

我正在尝试在剃刀页中实现一个简单的 select下拉列表。我不确定是否错过任何内容,但下拉列表根本不会出现。出于演示目的,我使用了硬编码的字符串值来填充下拉列表。

我有一个名为帖子的列表。

        var posts = new List<BlogDetails>();

        posts.Add(
        new BlogDetails {
            Id = 1,
            Author = "Charles",
            Title = "Finding Charles",
            Body = "This is a great blog post",
            PostedOn = DateTime.Now
        });

     ViewBag.listOfItems = posts;
     return View();

Index.cshtml中,我试图使用此列表填充下拉列表。

    <select asp-for="Id" asp-items="@(new SelectList(ViewBag.listOfItems, "Id", "Author"))">
    <option>Please select one</option>
    </select>

我不知道原因及其不起作用。 当我实际查看为此下拉列表生成的HTML时,我可以看到列表根本没有处理。

下面是生成的HTML。 enter image description here

有人可以帮我弄清楚我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

该列表未呈现,因为未启用标签助手。检查是否将以下行添加到_ViewImports.cshtml的“视图”文件夹的正下方

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

答案 1 :(得分:1)

控制器

test_db

剃刀

 var posts = new List<BlogDetails>();

    posts.Add(
    new BlogDetails {
        Id = 1,
        Author = "Charles",
        Title = "Finding Charles",
        Body = "This is a great blog post",
        PostedOn = DateTime.Now
    });

 ViewBag.listOfItems =  new SelectList(posts, "Id", "Author");
 return View();

或者您可以尝试

@Html.DropDownListFor(model => model.post, (IEnumerable<SelectListItem>)ViewBag.listOfItems, "--Select Post--", new { @class = "form-control" })