C# 从Db Repository ASP.net core的选择列表中添加项目
我想用存储库中的数据填充视图中的选择列表。我尝试使用ViewData,如下代码所示,但出现了此错误 无法将类型“object”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(是否缺少强制转换?) 选择列表如下所示C# 从Db Repository ASP.net core的选择列表中添加项目,c#,asp.net-mvc,asp.net-core,razor,C#,Asp.net Mvc,Asp.net Core,Razor,我想用存储库中的数据填充视图中的选择列表。我尝试使用ViewData,如下代码所示,但出现了此错误 无法将类型“object”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(是否缺少强制转换?) 选择列表如下所示 控制器看起来像这样 [HttpGet] public IActionResult Create() { this.ViewData[“categories”]=\u categoryRepository.categories
控制器看起来像这样
[HttpGet]
public IActionResult Create()
{
this.ViewData[“categories”]=\u categoryRepository.categories;
返回视图();
}
此错误的任何解决方案,或者以其他方式将存储库数据获取到视图的最佳方式是什么?选择的项目属性值是
选择列表项目
的集合。因此,您必须将其转换为以下内容:
this.ViewData["categories"] = _categoryRepository.Categories.Select(x => new SelectListItem {
Value = x.ToString(),
Text = x.ToString()
}).ToList();
在Razor中,我们可以将此更新为
<select asp-for="Category" class="custom-select mr-sm-2" placeholder="Category" asp-items="@((List<SelectListItem>)ViewData["categories"])">
<option value="">Select one</option>
</select>
选择一个
尝试以下操作:ViewData[“categories”]=\u categoryRepository.categories.Select(x=>new-SelectListItem(){Value=x.Id.ToString(),Text=x.Title});为了查看是否正确理解了这一点,这会导致存储库中的数据必须位于SelectListitem对象中,才能在SelectList中使用。再次感谢您提供的解决方案。