剃刀中带有红色下划线的 TextBoxFor

TextBoxFor with red underline in razor

我有一个 aps MVC razor 项目,其中的 razor 页面在 razor 助手中显示错误而不是使用 lambda 表达式,

例如:

@model Person

@Html.TextBoxFor(c=>c.Name)

标有红色下划线,c.Name没有intelisense。

但是如果我使用

@Html.TextBox("hello")

没有标出红色下划线。

这确实让我可以编译和执行,但它很烦人,因为 lambda 表达式中缺少智能感知。

给出的错误是:

无法从用法中推断出方法的类型参数

我尝试过的一些东西

稍微改变调用的结构:

@(Html.TextBoxFor(c=>c.Name))

然后只有 lambda 表达式是红色的,错误是:

无法将 lambda 表达式转换为类型,因为它不是委托类型

我有

<compilation debug="true" targetFramework="4.0">

使用我的项目的 targetFramework,所有其他不使用 lambda 的助手都不会出现此错误。

它可以是什么?

我刚才遇到了这个问题,我知道它可能对你一点帮助都没有,因为这个回复是在 2 年后才出现的,但是在 google 中搜索这是第一个结果,我解决了一个解决方案。

原来 "System.Core" 引用有问题(我不知道为什么)。我试图再次删除并添加该引用,但在添加时出现错误。因此,我进行了更多搜索,发现即使它在您的项目中不可见,Microsoft 也进行了该引用,因此要再次添加它,您需要自己编辑“*.csproj”。我用 VS Code 打开它(你甚至可以使用记事本)然后添加:

<Reference Include="System.Core" />

我像其他所有参考文献一样按字母顺序排列,但我认为这并不重要,在我的例子中是在 "System.ComponentModel.Composition" 之后。希望这能在您再次遇到这种情况时对您有所帮助,并可能对其他发现此问题的人有所帮助。