使用GetEnumSelectList提示‘委托类型无法推断’,该如何解决?
解决GetEnumSelectList的智能提示假阳性错误
这是Visual Studio IntelliSense的假阳性错误,代码本身语法没问题,也不影响运行,但可以通过以下方法消除红色波浪线:
显式指定枚举的完整命名空间
有时候智能提示找不到枚举的定义,给枚举加上命名空间即可,比如:<select asp-for="Level" asp-items="@Html.GetEnumSelectList<YourProjectNamespace.Level>()"> <option>Select Level...</option> </select>另外确保视图是强类型视图,顶部有
@model指令指向包含Level属性的模型类,比如@model YourProjectNamespace.YourViewModel。清理并重建项目
右键项目 → 清理解决方案,接着右键 → 重建解决方案,刷新IntelliSense缓存后问题大概率会消失。重置Visual Studio的IntelliSense缓存
打开菜单:工具 → 选项 → 文本编辑器 → C# → 高级,点击「重置IntelliSense缓存」按钮;或者按Ctrl+Shift+R刷新当前文档的智能提示。换一种Tag Helper写法(可选)
改用控制器传值的方式绕开智能提示的问题:
控制器代码:ViewData["LevelOptions"] = new SelectList(Enum.GetValues(typeof(Level)));视图代码:
<select asp-for="Level" asp-items="@((SelectList)ViewData["LevelOptions"])"> <option>Select Level...</option> </select>
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

