asp.net-mvc - MVC 视图中的下拉列表
问题描述
我正在尝试创建一个下拉列表,但下拉列表中除了“请选择一个”之外什么都没有,但没有值。
到目前为止,我已经尝试过:
看法:
<select asp-for="StatusToEdit.Color.Name" asp-items="Model.AvailableColors">
<option>Please select one</option>
</select>
模型:
public SelectList AvailableColors { get; set; }
public void OnGet()
{
AvailableColors = new SelectList(nameof(StatusColor.ColorId),
nameof(StatusColor.Name));
}
模拟列表:
private static List<ItemStatus> _mockStatuses = new List<ItemStatus>
{
new ItemStatus { StatusId = 1, Name = "Complete", Color = new
StatusColor{ ColorId = 1, Name = "Auto" } },
new ItemStatus { StatusId = 2, Name = "Complete, Ongoing", Color =
new StatusColor{ ColorId = 2, Name = "Green" }},
new ItemStatus { StatusId = 3, Name = "In Process", Color = new
StatusColor{ ColorId = 3, Name = "Yellow" }}
};
我希望看到所有颜色都显示在下拉列表中。
解决方案
如果您使用的是 asp.net core MVC(Razor Pages 类似),则需要将模型属性类型修改为IEnumerable<SelectListItem> AvailableColors
或List<SelectListItem> AvailableColors
1.型号
public class ManageStatusesEditViewModel
{
//other properties
public List<SelectListItem> AvailableColors { get; set; }
}
2.动作:
[HttpGet]
public IActionResult ManageStatusesEdit(int id)
{
//other logic
var dropdownData = new List<SelectListItem>();
_mockStatuses.ForEach(d => dropdownData.Add(new SelectListItem()
{
Value = d.Color.Name,
Text = d.Color.Name
}));
var editManageStatusesEditViewModel = new ManageStatusesEditViewModel
{
AvailableColors = dropdownData
};
return View(editManageStatusesEditViewModel);
}
3.查看:
<select asp-for="StatusToEdit.Color.Name" asp-items="Model.AvailableColors">
<option>Please select one</option>
</select>
4.结果:
推荐阅读
- java - 将谷歌表格数据同步检索到 android 应用程序
- amazon-web-services - 如何从 EC2 实例收集日志并将其存储在 S3 存储桶中?
- python - 有没有一种有效的方法来获取 pyshark 中的字段偏移量
- bash - 从过滤器位于第一列的第二列中选择匹配项
- javascript - 在 Date 上添加日期时的奇怪行为
- python - cx_Freeze + curses: 'NoneType' 对象没有属性 'fileno'
- css - 使用 SASS 导入自定义字体时出错
- r - R:匹配两个数据帧中的值,例如 vlookup,但对于没有 Key [大数据] 的多个条件
- ios - 如何过滤时间戳数组以保持特定时间?
- angular - 没有箭头功能的 Typescript/Angular2 委托