私が調べた好奇心の1つに出くわしましたが、正確な答えはまったく見つかりませんでした。ビューのモデルについて言及すると、直接的な方法で参照がないように見えるクラスがたくさんあることに気付いたときに、mvcプロジェクトにビューを追加していました。たとえば、[ビューの追加]ダイアログで、ExcelのすべてのClosedXmlクラスを確認できますが、そのdllは、Webプロジェクトではなく、BussinesLogicプロジェクトで参照されています。では、1。[ビューの追加]ダイアログの[モデル]ドロップダウンに表示されるのはなぜですか?2.このリストは、modelsフォルダーのクラスのみで構成されているべきではありませんか?これがばかげた質問である場合は申し訳ありませんが、それでも誰も私に正直な答えを与えることができませんでした。
2 に答える
現在のアセンブリのModelフォルダーで宣言されているクラスだけでなく、現在のソリューションの一部であるすべてのパブリッククラスがこのリストに表示されます。参照されるアセンブリのクラスも表示されます。ただし、一部のクラスは除外されます。
- で終わるタイプ
Controller
(リストにコントローラーが表示されないようにするため) System
またはMicrosoft
名前空間で宣言されたタイプ
@DarinDimitrovの答えに加えて
たとえば、[ビューの追加]ダイアログで、ExcelのすべてのClosedXmlクラスを確認できますが、そのdllはBussinesLogicプロジェクトで参照されています。
Visual Studioはすべての参照を反復処理しているように見えるので、MVCプロジェクトにビジネスコンポーネントへの参照があると思います
さて、その理由は?まあ、それはあなたが実際public
にあなたのモデルとしてどんな実体も使うことができるからです
2.このリストは、modelsフォルダーのクラスのみで構成されているべきではありませんか?
いいえ
MVCのモデルは、ビューを表す単純なクラスです。現在のドメインモデルについて混乱しないでください。彼らは同じ用語を使用しましたが、MVCのモデルはまさにそれであり、あなたの見解を表すための単純なクラスであり、それ以上のものはありません
そのことを念頭に置いて、モデルとして任意のパブリッククラスを使用できます。
それが背後にある理由だと思いますが、リストのコンテンツを表示するのに時間がかかりすぎることが多いため、Visual Studioでこのオプションを使用することはめったにないので、モデルを手動で設定することを好みます