0

作業中のプロジェクトのコントローラー クラスに表示されるプライベート メソッドの変更されたパブリック バージョンを作成しようとしています。プライベート メソッドはカスタム タイプのリストを返しますが、パブリック メソッドでは int のリストを返したいと考えています。

そのため、既存のメソッドを \Controllers フォルダーのコントローラー クラスから、App_Code フォルダーの下に追加した新しい Utils クラスにコピーしました。

ただし、コードをコンパイルするには、特定の "using" 句を追加する必要があることがわかりました。問題なし?

たとえば、次のコード行では:

get { return int.Parse(CCRCustomer.GetCustomerNumberFromUsername(User.Identity.Name)); }

...「アイデンティティ」は赤で、認識されていません。「ユーザー」は私たちのカスタムクラスであるはずです。しかし、私がそれにカーソルを合わせると、

「モジュール System.Data.Entity ...」と表示されます

ただし、System.Data.Entity を using 句に追加すると、その「エンティティ」部分が認識されないため、赤色になります。

次の問題は次の行です。

using (var conn = new EntityConnection(ConnectionString))

...その場合、今度は「EntityConnection」が当惑し、赤くなったり認識されなくなったりします。

元の同様のコードを持つコントローラー クラスには、次のようなものがあります。

using System.Data.EntityClient;

...だから私は多分それが私が必要としていたものだと思いました; しかし、それを私のUtilsクラスに追加すると、「エンティティ」でさらに赤くなるだけです。

参照されたクラスがプロジェクトのある部分からは見えるのに、別の部分からは見えないのはなぜですか?

4

1 に答える 1

2

Web アプリケーション プロジェクトでは、コード ファイルを app_code フォルダーに追加する必要はありません。プロジェクトに通常の「Utils」フォルダーを作成し、代わりに追加します。app_code 内のコード ファイルは別のアセンブリにコンパイルされるため、app_code の下に配置するコードで既存のプロジェクト ( Entity Framework など) への参照が失われます。

編集:これをさらに明らかにするために、デフォルトでは ASP.NET Mvcは app_code folder を追加する方法を提供しません。これは、app_code が主に、コード ファイルが動的にコンパイルされる Web サイト用に存在するためです。Web アプリケーションは事前にコンパイルされており、Mvc は Visual Studio の Web アプリケーション プロジェクトとしてのみ提供されます。リンクされたSOの質問で述べたように、本当に必要な場合はこれを回避できます。

于 2013-08-16T18:23:00.847 に答える