2011-02-06 12 views
7

VS2010アルティメット版、ASP.NET MVC 3ワイザー付き。ASP.NET MVC3 Razor - 別の場所にビューを配置するとインテリセンスが失われる?

私はこれはすべて私がインテリセンス失っているように見えるため除いて、素晴らしい作品そう

~/areas/admin 
    /marketing 
     /views 
      index  
     /controllers 
      marketingController 
     /email 
      /views 
       index 
       ... 
      /controllers 
       emailController 
     /templates 
      /views 
       index 
       edit 
       ...     
      /controllers 
       templatesControler 

などのような

、ネストされた領域を可能にする私のMVC3アプリでカスタムビューエンジンを作成しました標準にないビュー~/areas/area_name/views/myview.cshtml場所。

提案がありますか?

アップデートだけヒバリに、私は@inherits声明

@inherits System.Web.Mvc.WebViewPage<Namespace.Models.Class> 

を追加し、インテリセンスが作業を開始しました。私はその後、ステートメントを削除し、は、の作業を続行します。

プロジェクトファイルや、ファイル拡張子以外の開いているファイルにどのようなインテリセンスを適用するかをVisual Studioに指示する設定がありますか? (拡張機能がすべて使用されていた場合は、一貫性の高いものになると思います)。アップデート2

私の見解フォルダのそれぞれにweb.configファイルを追加すると、ルートweb.configファイルにかみそりの設定を入れて、非常にうまく問題を修正しながら

はしていません。 ~/web.configに必要なsystem.web.webPages.razorセクションを追加した後

は、

  1. は、私は私のネストされたビューのフォルダのいずれかにカミソリ.cshtmlビューファイルを追加します。
  2. インテリセンスが動作します。
  3. ファイルの名前を変更します(拡張子は.cshtml)。
  4. Intellesenseと構文の強調表示が機能しなくなります。
  5. 名前が変更されたファイルを閉じて再度開くと、すべてが再び機能し始めます。
  6. また、ファイルを閉じて再オープンする代わりに、元の名前に戻して再度作業を開始します。

これはVSのバグのように感じます。ファイルの名前を変更しても(適切な拡張子を維持してください)、この種の動作が発生するはずはありません。問題を修正してから個々のビューフォルダに個別にweb.configを置いていきますが、ソリューションツリーを介してこれらの設定が他のweb.config設定と同じように伝播すると思うと、ソリューションが乱雑になるのは面倒です。

また、Razor設定がどこにあるかに関わらず、intellesenseが動作しているかどうかにかかわらず、サイトは正常に機能し続けます。

は、私は、これはMVC3 RTMとVS2010 SP1で修正された既知の問題だったと権力で(信じられないほど速く)知らされた

を解決しました。 MVC3のインストールを更新してSP1を追加すると、この問題は解消されました。

+0

そうですね。それはVSのバグのように聞こえる。電子メール[email protected]。 – SLaks

+0

となります。最後にオラクルを見に行く理由。 –

答えて

7

Viewsフォルダには、Web.config file that sets default options for Razor views(既定の基本タイプと名前空間、および@modelディレクティブを有効にするカスタムホストが含まれます)が含まれています。

別のフォルダのレイザービューはこの設定を継承しません。
あなたのフォルダにWeb.configにこの設定を追加する必要があります。

<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" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+0

これらの設定がルートweb.configから伝播しない理由はわかりませんが、優れたコール、クイックフィックスです。どんな洞察? –

+0

ルートWeb設定にこれらの設定が定義されていません。しかし、あなたはいつでもそれを自分で追加することができます。 – marcind

+0

@David:他のフォルダのMVC以外のページを破棄しないように、それらは 'Views/Web.config'にのみ追加されます。 – SLaks

関連する問題