2

我正在使用 Visual Studio 2012、ASP.NET MVC 4 和 Razor 视图。考虑以下代码:

@{
    Action<Action<int>> fun = x => { x(42); };
    fun(x =>  { PrintX(x); }); // This is OK
    fun(x =>  { var z = PrintX(x); }); // This produces error
    // "Argument 1: cannot convert from 'lambda expression' to
    // 'System.Action<int>'"
}
@helper PrintX(int x) { <div>@x</div> }

不知何故,将字符添加var z =到 lambda 函数的内容使其无法将其转换为正确的类型(实际上,任何形式的获取该函数的值都会给出这种情况)。

但是,此错误仅由 IntelliSense 产生。它在运行时工作。

是什么赋予了?

4

1 回答 1

0

呵呵,自己解决了。:) 问题是该方法返回一个类型System.Web.WebPages.HelperResult,该类型在程序集中定义System.Web.WebPages。不幸的是,就 IntelliSense 而言,该程序集没有加载,所以奇怪的事情开始发生。

要修复它,我需要做的就是将以下行添加到我的 web.config 中:

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

(是的,毕竟我还在使用旧的 MVC 3。我的错误,解决了这个问题)

于 2013-02-13T15:07:33.070 回答