为什么我的下拉列表不显示任何选项?
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);
我正在用 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);