1

asp.netmvcでの私の見方に問題があります。usingディレクティブの名前空間がビューの名前空間と衝突し、Razorで生成されたクラスでコンパイルエラーが発生します。@modelディレクティブでも同じ問題が発生しましたが、global::エイリアスを使用すると修正されました。何らかの理由で、@ usingで同じことを行うと、「タイプまたは名前空間'グローバル'が見つかりませんでした...」というエラーが発生します。これが私が今持っているものです:

@using SampleSpace.System.Items

@model global::SampleSpace.System.Items.Thing

使いたい

@using global::SampleSpace.System.Items

@model global::SampleSpace.System.Items.Thing

しかし、前述のエラーは発生し続けます。ビューのusingディレクティブでグローバルを使用するためのトリックはありますか、それとも許可されない理由がありますか?

4

2 に答える 2

3

これがあなたの質問に正確に答えるかどうかはわかりませんが、興味のある名前空間をViewsフォルダーのweb.configに配置することで、問題を解決できますか?

 <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <!-- snip -->
        <add namespace="SampleSpace.System.Items" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

これは、ビューが名前空間を「使用」する必要がある場合、一般的には良い習慣です。ビュー自体が乱雑にならないようにします。ただし、説明した競合シナリオではこれをテストしていません。

または、競合を回避するためにこのアプローチにフォールバックします。

@using items = SampleSpace.System.Items

お役に立てば幸いです。

于 2012-11-15T19:42:29.423 に答える
1

これを克服する最も簡単な方法は、ファイルのプロパティの下にあるカスタムツールの名前空間を調整することです。競合を避けるために、これを好きなように変更できます。

于 2013-01-03T19:45:37.007 に答える