2016-05-09 17 views
0

Visual Studio 2015 +すべての更新。 Asp .Net Webアプリケーション(MVC)。コントローラを作成して別のプロジェクトにビューを追加する

いくつかのクラスライブラリを追加し、Asp .Net WAをレイヤー、つまりDataAccess、Business Logic、およびWebプロジェクト自体に分割することから始めます。

一度分離すると、関連する参照が追加され、すべてが正常に機能しています(つまり、レイヤーに分割する前のアプリケーションの機能)。

私のBL(コントローラはここにあります)。私は私のクラスライブラリと追加コントローラのためにあなたが右のデフォルトのプロジェクトにコントローラのフォルダをクリックするだろうというときのように、コントローラを追加するためのオプションを持っているので、csprojファイルに

<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> 

以下の行を追加しないでくださいオプションが表示されます。コントローラーを作成しますが、web.configファイルがないために発生したエラーがスローされます - このファイルとすべてのワークを追加します(web.configファイルなしでこのライブラリーを使用するのはいいですが)。

私がヒットした問題は、コントローラを作成すると、クラスライブラリ内にビューテンプレートも追加されますが、ビューフォルダはWebプロジェクトにあります。

これは間違っていますか?回避策はありますか?コントローラーが作成されると、ビューが正しいプロジェクトにも作成されます。これに対する別のアプローチですか?

答えて

1

これは単なる推測ですが、UIベースのアーキテクチャパターンを使用してビジネスレイヤを構築しようとしているようです。

通常、モデル、ビュー、およびコントローラはすべて、メインのweb-appプロジェクトで管理されています。サポート関数(BLやDLなど)はクラスライブラリを介して追加されます。 Visual Studio MVCテンプレートはそのコンセプトに基づいて構築されているため、GUIDを使用して手動でサポートを追加する必要があります。また、自動的にビューを作成する理由もあります。

私が尋ねることがあるのであれば、なぜコントローラをBLに組み込もうとしていますか?あなたのサーバーコードからあなたのUIを切り離そうとしているなら、多分WebAPIが良い選択でしょう。

UPDATE - いくつかの役に立つリンク

ProDinner - ASP.NET MVC Sample App

N Layered App with Entity Framework, Autofac, ASP.NET MVC and Unit Testing

Architecture Guide: ASP.NET MVC Framework + N-tier + Entity Framework and Many More

+0

私はこれが正しいアプローチだと思いましたか?私が持っていた考えはコントローラをBLに移動して、すべてが1つの場所にあるようにすることでした....私はあなたのメインWebプロジェクト内のコントローラを残し、任意のCRUD操作のための参照としてこれらを使用してプロジェクトにBL/DAのdllをインポートすることをお勧めしますか? iveがあなたを正しく理解していれば、これを試してみるための例やアドバイスはありますか? Thx – Computer

+0

これは正しいです。 Webアプリケーションは、ソリューションのMVC部分です。すべてのモデル、ビュー、コントローラがここにあります。あなたのBLまたはドメインのロジックは別のDLLになります。また、DLまたはデータコンテキストは別のDLLになります。 MVCのポイントは、ビジネスロジックをそれらのコンポーネントから守り、コントローラがロジックとデータのために他のレイヤとやり取りできるようにすることです。私はいくつかのリンクを使用して私の答えを更新します。 – WonderGrub

+0

ありがとうございます。 Data Contextは、私が紹介しようとしていた次の部分がリンクされています。 – Computer

1

あなたの問題のほとんどは、足場を使用して煮詰めます。あなたがちょうど出発するとき、または非常に簡単なプロジェクトのときは足場は素晴らしいですが、それを超えてすぐに落ちます。具体的には、足場を介してコントローラを追加することは、MVCプロジェクト用に設計されているため、MVCプロジェクトで見つけられるものを見つけることが期待されます。さらに、Viewsの適切なディレクトリにスキャフォールドされたビューを作成します。なぜなら、これはそのために設計されているからです。

最も簡単な解決策は、足場を使用しないことです。コントローラは、Controllerから継承するクラスです。特別なものはありません。次に、作成するビューを作成することができます。

関連する問題