2013-02-08 1 views
5

별도의 MVC4 프로젝트에 포함될 클래스 라이브러리에 면도기 (cshtml) 파일을 포함하려고합니다. 인텔리 센스가 특정 유형, 특히 System.Web.Helpers.Json에 대해 누락 된 것으로 보이는 것을 제외하고는 모든 것을 작동 시켰습니다. 아직 발견하지 못한 다른 것들이있을 수 있습니다. 내 문제는 Razor views: Intellisense not working with C# 3 for class libraries과 관련이있을 수 있지만 정확하게 동일하지는 않습니다. 내가 처음 면도기 파일을 열 때, 나는 경고의 오류 여러 종류가 표시됩니다클래스 라이브러리의 면도기, 인텔리 센스 없음

@model dynamic 
@{ 
    // ... some code ... 
    var options = new global::System.Web.Mvc.SelectListItem[] 
    { 
     new global::System.Web.Mvc.SelectListItem() 
     { 
      Text = "No", 
      Value = global::System.Web.Helpers.Json.Encode(false) 
     }, 
     new global::System.Web.Mvc.SelectListItem() 
     { 
      Text = "Yes", 
      Value = global::System.Web.Helpers.Json.Encode(true) 
     } 
    }; 
} 
@(global::System.Web.Mvc.Html.SelectExtensions.DropDownList(this.Html, string.Empty, options)) 

: 여기 내 면도기보기에서 샘플이

  • 형식 또는 네임 스페이스 이름을 '동적'없었다 발견 (당신은 어셈블리 참조가?) '암시 적으로 로컬 변수를 입력 한'
  • 기능을 사용할 수 없습니다가 ISO-2 C# 언어 사양
  • 기능 '객체 initializ의 일부 하지 않기 때문에 어 JSON System.Web.Helpers ' '네임 스페이스에 존재하지 않는다 '는 일부가 아니므로
  • 이 형식 또는 네임 스페이스 이름은 ... 사용할 수 없습니다'(당신이없는 어셈블리 참조?)

처음 두 가지 유형 오류는 프로젝트를 빌드 할 때 사라지지만 마지막 것은 유지됩니다. 인텔리 전트는 System.Web.Helpers.Antiforgery, UnvalidatedRequestValuesValidation 만 입력하면 나타납니다. 동일한 코드를 .cs 파일에 입력하면 Json과 내가 볼 것으로 예상되는 다른 모든 옵션이 표시됩니다. 그리고이 파일을 실제 MVC 프로젝트에 복사하면 편집기에 오류가 표시되지 않고 정상적으로 실행됩니다. 여기

내가 내 프로젝트에 Web.config 파일에 추가 한있다가 여기까지 작업을 효율적으로 활용하려면 다음

<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.Helpers" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    </appSettings> 

    <system.web> 
    <compilation targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
     <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <httpHandlers> 
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 
    <pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 
    </system.web> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    </system.webServer> 
</configuration> 

을 나는이 클래스를 인식 인텔리을 어떻게합니까?

답변

0

동적 인을 사용하면 Intellisense의 이점을 잃게됩니다. 강력한 형식의보기를 사용해보십시오. 컨트롤러에서 모델 인스턴스를 전달하는 View 메서드의 오버로드를 통해 모델을 지정합니다. ViewData.Model 속성 값을 View 메서드에 전달 된 값으로 설정합니다. 그런 다음 어떤 모델 유형이 @ 모델 선언을 사용하고 있는지 뷰에 표시하십시오. 모델 유형의 정규화 된 유형 이름을 제공해야 할 수도 있습니다.

관련 문제