2013-02-13 49 views
2

我正在使用Visual Studio 2012,ASP.NET MVC 4和Razor視圖。請看下面的代碼:Razor,intellisense和lambda表達式的類型錯誤

@{ 
    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產生的。它在運行時工作。

什麼給?

回答

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,修復了這個問題)