2013-02-13 1 views
2

Visual Studio 2012, ASP.NET MVC 4 및 면도기 뷰를 사용하고 있습니다. 다음 코드를 생각해 어떻게 든 람다 함수의 내용에 var z = 그것이없는 권리 유형 (실제로, 그 함수의 값을 가지고 어떠한 형태이 있습니다)에 캐스팅 할 수있는 문자를 추가 면도기, 인텔리 센스 및 람다 식으로 유형 오류가 발생했습니다.

@{ 
    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> } 

.

그러나이 오류는 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를 사용하고 결국 내 실수, 질문 수정)

관련 문제