c# - 转换错误:类型 IList 不能隐式转换为 IEnumerable
问题描述
我的 EF Codefirst 模型是Lib
public class Lib
{
public int ID { get; set; }
[Required]
[PageRemote(PageHandler = "IsKeyExists", HttpMethod = "Get")]
public string Key { get; set; }
}
我想要一个combobox
in razor 页面来选择一个 Lib。我的cshtml代码是:
<select asp-for="Lib" asp-items="Model.Libs"></select>
我的 PageModel 代码是:
public IList<Lib> Libs { get; set; }
public Lib Lib { get; set; }
然后我得到一个编译器错误
错误CS0266:无法将类型“System.lections.Generic.IList”为“System.Collections.Generic.IEnumerable”。一个显式转换(是否存在集体转换强制?)
英文版(来自谷歌翻译):
错误 CS0266:“System.Collections.Generic.IList”类型无法隐式转换为“System.Collections.Generic.IEnumerable”。有一个明确的转换(是否缺少演员表?)
在 wpf 组合框中有一个名为 的属性DisplayMemberPath
,有没有类似的方法?
解决方案
您需要传递兼容的类型。如果您查看docs,您会发现他们使用SelectListItem
列表。public IList<Lib> Libs{get;set;}
你可以重构public IList<SelectListItem> Libs{get;set;}
另一种方法是将您的列表映射到SelectListItem
列表:
@using System.Collections.Generic
<select asp-for="Lib" asp-items="Model.Libs.Select(l=> new SelectListItem{Text=l.Key, Value=l.ID.ToString()})"></select>
推荐阅读
- selenium-webdriver - 使用量角器在 chrome 中接受位置权限请求
- regex - 在斜杠之间获取前两个字符串
- r - 如何重命名R中的许多列
- html - 在单个 HTML 页面中使用 Nivo 图形库 (React)
- linux - “查找”命令中的未知谓词错误
- angular - angular - strictTemplates true 忽略类型保护
- javascript - 从按钮中替换/删除 EventListener
- node.js - 如何在不使用企业版的情况下将 twilio 可编程视频录制上传到 S3?
- javascript - vuejs - 动态添加的 dom 元素未呈现
- javascript - 如何显示来自文本区域的数组中重复的值