2013-02-08 8 views
5

別のMVC4プロジェクトに含まれるように、クラスライブラリにrazor(cshtml)ファイルを含めることを試みています。インテリセンスは特定のタイプ、具体的にはSystem.Web.Helpers.Jsonには欠けているようですが、私がまだ発見していないものもありますが、すべて動作しています。私の問題はRazor views: Intellisense not working with C# 3 for class librariesに関連するかもしれませんが、まったく同じではありません。ここに私のかみそりビューからのサンプルは次のとおりです。クラスライブラリ内のレイザー、intellisenseがありません

@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ではありませんので、使用することはできない「暗黙的にローカル変数を入力」(あなたが アセンブリ参照が不足している?)
  • 特集見つけることがER」
  • ...それは一部ではないため、使用することはできません型または名前空間名 『JSONは(あなたがアセンブリ参照が不足している?)
System.Web.Helpers『 』名前空間に存在しません』

最初の2つのタイプのエラーは、プロジェクトをビルドすると消えますが、最後のものはそのまま残ります。インテリセンスは、System.Web.Helpers.Antiforgery,UnvalidatedRequestValuesValidationと入力すると表示されます。 .csファイルに同じコードを入力すると、私はJsonと私が見ると思う他のすべてのオプションを参照してください。そして、これらのファイルを実際のMVCプロジェクトにコピーすると、エディタにエラーが表示されず、正常に動作します。

<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> 

は、どのように私は、このクラスを認識するためにインテリセンスのですか:ここで

は、私はそれがここまでの作業を取得するために私のプロジェクトに追加したWeb.configファイルのですか?

答えて

0

ダイナミックを使用すると、Intellisenseの利点が失われます。強く型付けされたビューを使用するようにしてください。コントローラで、モデルインスタンスを渡すViewメソッドのオーバーロードを介してモデルを指定してみてください。これにより、ViewData.Modelプロパティの値がViewメソッドに渡される値に設定されます。 @model宣言を使用しているモデルのタイプをビューに示します。モデルタイプの完全修飾型名を指定する必要があります。