3

私は ASP.NET MVC の新しい学習者です。いくつかの本とコード サンプルを調べました。私が学んでいる間、私は以下の質問を思いつきましたが、以下の点を明確に理解できません.

ほとんどの本では、モデルをModelsフォルダーに配置することは構成よりも慣例であると説明されています。また、ASP.NET MVC フレームワークは、開発者がモデルをそのフォルダーに配置することを想定していると述べています。ただし、ほとんどのコード サンプルと他の多くの開発者は、別のクラス ライブラリ プロジェクト (つまりProject)Modelsなど、以外のフォルダにモデルを配置します。ViewModelsServices

これら2つの方法に違いはありますか?Modelsモデルをフォルダーに配置した場合、ASP.NET MVC がモデルに対して行うことはありますか? それらの良い点と悪い点は何ですか? あなたのプロジェクトはどうですか?

4

3 に答える 3

4

ほとんどの本では、Models フォルダに Models を配置することは設定よりも慣例であると説明されています。また、ASP.NET MVC フレームワークは、開発者がモデルをそのフォルダーに配置することを想定していると述べています。

これは間違っています。asp.net-mvc がフォルダー構造を使用し、その構成を (明示的または慣例により) 必要とするのは、ビューを見つけるときだけです。コントローラには接尾辞「Controller」で終わる慣習があり、モデルには何もありません。モデルは好きな場所に自由に配置できます。

于 2013-06-17T08:00:50.913 に答える
2

You dont need to add your model(s) into the model folder that comes with the Visual Studio set up, this is only meant for basic set up. You don't even need the model(s) in the same project, you can move them into a differenct class library, which is ofen seen in larger scale applications.

However, since you are just learning MVC, then it might be worth investing your time on how to build small MVC applications, rather than how to architect them, and then concentrate on this aspect later.

Take a look at this link too, it might come in handy later on ASP.NET MVC - separating large app

于 2013-06-17T08:25:35.367 に答える
1

モデルは、ドメイン オブジェクトの一種のデータベース表現であり、オートバイなどのアプリケーション モデルの表現です。しかし、そのオートバイをレンダリングするビューでは、オートバイに関するよりも多くの情報を表示する必要がある場合があります。ドメインオブジェクト...そして、基本的にドメインモデルを「含む」ビューモデルの「パターン」(いくつかあります)が来ます...

View Model パターンは通常柔軟性を提供し、必要に応じて一種の継承/依存関係の難読化を提供します。

物理モデル ファイルは実際にはどこにでも配置できます。これは単なるクラスであり、使用するには参照する必要があります。

例: ドメイン モデル

 public class Motorcycle
 {
     public string Make { get; set; }
     public string Model { get; set; }
     public int Year { get; set; }
     public string VIN { get; set; }
 }

モデルを見る

 public class MotorcycleViewModel
 {
     public Motorcycle Motorcycle { get; set; }
     public SelectList MakeList { get; set; }
     public SelectList ModelList { get; set; }
 }
于 2013-06-17T08:07:07.597 に答える