为什么我的下拉列表不显示任何选项?

Why do my dropdown list dont show any options?

我正在用 ASP.NET 核心 MVC 编写一个项目。我想要一个硬编码的下拉列表,您可以在其中获得可供选择的备选方案,这些备选方案将保存到我使用 entity framework 核心创建的数据库中。我得到的只是一个下拉菜单本身,但没有其他选择,我真的不明白为什么?

我的硬编码列表所在的控制器:

public IActionResult Create(int? id)
{
        TicketVM obj = new TicketVM();
        obj.ProjectList = _db.Projects.Select(i => new SelectListItem
        {
            Text = i.Name,
            Value = i.Project_Id.ToString()
        });

        if (id == null)
        {
            return View(obj);
        }

        // Status List
        #region
        List<SelectListItem> statusList = new List<SelectListItem>();

        statusList.Add(new SelectListItem()
        {
            Value = "Open",
            Text = "Open"
        });

        statusList.Add(new SelectListItem()
        {
            Value = "Closed",
            Text = "Closed"
        });

        TicketVM ticketvm = new TicketVM()
        {
            StatusList = statusList
        };
        #endregion
        // Status List End

        obj.Ticket = _db.Tickets.FirstOrDefault(u => u.Ticket_Id == id);

        if (obj == null)
        {
            return NotFound();
        }

        return View(obj);
}

这是我的视图模型,其中有我的列表模型:

public IEnumerable<SelectListItem> StatusList { get; set; }

public string TicketStatus { get; set; }

这是我的视图,其中有我的下拉列表:

<div class="form-group">
    <label asp-for="TicketStatus" class="col-md-2"></label>
    <div class="col-md-4">
        <select asp-for="TicketStatus" asp-items="@Model.StatusList" class="form-control">
            <option disabeld selected>
            --Select Status--
            </option>
       </select>
    </div>
</div>

我的预期结果是我会有一个列表,我可以在其中选择打开和关闭

这是有问题的代码:

TicketVM ticketvm = new TicketVM()
{
     StatusList = statusList
};

您创建了一个新对象,而不是在现有创建的 vm 对象中设置 StatusList obj,而传递给视图的对象是 obj 而不是 ticketvm所以更改您的代码以在 obj 中设置列​​表,例如:

obj.StatusList = statusList;

您还需要在末尾对代码进行更多排序,以防止出现 运行 时间错误,例如:

if (obj == null)
{
    return NotFound();
}

obj.Ticket = _db.Tickets.FirstOrDefault(u => u.Ticket_Id == id);
obj.StatusList = statusList

return View(obj);