1

私は ASP.NET MVC を学習しており、ASP.NET MVC サンプル アプリケーションNerdDinnerを見ています。

  1. 「Models」フォルダには、 というクラスが含まれていますDinner.cs。これはディナーのメイン エンティティです。このクラスは別の場所にあるべきではありませんか? 例えば「ドメイン」?代わりに、ディナー情報を含むモデル フォルダーにビューモデル クラスを配置する必要がありますか?

  2. ファイル「PaginatedList.cs」が「Helpers」というフォルダーにあるのはなぜですか。このファイルは、ビューに提供されているため、「モデル」フォルダーにあるべきではありませんか?

これに関する明確な説明をいただければ幸いです。

4

2 に答える 2

1

最初の質問では、Dinner.csファイルにはクラスの一部とDinnerバディ クラスのいくつかの検証属性が含まれています。Modelこのファイルは実際にはソリューションのモデルの一部であるため、このファイルをフォルダーに入れることは完全に正気です。

2 番目の質問についてPaginatedListは、データの特定の「ページ」(要素の固定セット) を一度に表示できる一種のデータ構造です。ViewModel「ヘルパー」とはまさにそれです。

もう1つ追加したいのは、実際のモデルクラスの代わりにビューに渡すViewModelがある場合、または渡すデータ要素の特定のセットがあるため、そのための別のViewModelフォルダー。

お役に立てれば :)

于 2011-02-26T19:51:03.463 に答える
1
  1. 確かに、あなたの考えはこれについて正しいです。NerdDinner は、コンセプトの提示のみを目的として作成されたものであり、すべてのベスト プラクティスを真似たものではありません。あなた自身のプロジェクトが成長するにつれて、それはますます明白になります。ドメインエンティティ/サービス/リポジトリを別のフォルダー、別のプロジェクト、場合によっては別のソリューションに配置します。このフォルダーの名前を に変更しViewModelsて、プロジェクトで作業している他の人にわかりやすいようにします。

  2. PaginatedList は ViewModel にすることができ、ページネーションに関連するデータを含めることができます。ViewModelsその後、フォルダに入れることができます。しかし、あなたが NerdDinner に持っているものは、ページネーション マークアップを生成する単純な View ヘルパーに過ぎないと思います。さらに、ヘルパーはそれほど厳密な「View」または「ViewModel」ではない可能性があります-単純なロジックを含めることができ、ViewとViewModelの中間にあります:)。また、PaginatedList は、「特定のソリューション」というよりは「フレームワーク」の問題であることに注意してください。そのため、プロジェクト固有のものの中で「Views」または「Models」フォルダーに配置することはできません。したがって、NerdDinner には「Helpers」で十分です。実際のソリューションでは、それを一般的なものにして、MVC の上にある「フレームワーク」に含めたほうがよいでしょう。

于 2011-02-26T19:39:26.713 に答える