初めての ASP.NET MVC (2) CMS を完成させました。次のステップは、CMS のデータベースからのデータを表示する Web サイトを構築することです。これはウェブサイトのデザインです:
http://img56.imageshack.us/img56/4676/portal.gif http://img56.imageshack.us/img56/4676/portal.gif
#1 (赤いボックス) - 記事のカテゴリを表示します。ビューモデル:
public class CategoriesDisplay
{
public CategoriesDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
}
#2 (茶色のボックス) - 最後の x 件の記事を表示します。緑色のボックス #3 からはスキップします。ビューモデル:
public class ArticleDisplay
{
public ArticleDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
public int ArticleID { set; get; }
public string ArticleTitle { set; get; }
public string URLArticleTitle { set; get; }
public DateTime ArticleDate;
public string ArticleContent { set; get; }
}
#3 (緑色のボックス) - 最後の x 件の記事を表示します。茶色のボックス #2 と同じ ViewModel を使用
#4 (青いボックス) - 今後のイベントのリストを表示します。dataContext.Model.Event
ViewModel として使用
ボックス #1、#2、および #4 はサイト全体で繰り返され、マスター ページの一部です。だから、私の質問は、このデータをモデルからコントローラー、そして最後にビューページに転送する最良の方法は何ですか?
- このすべてのクラスをまとめてラップするマスターページとViewModelクラスのコントローラーを作成する必要がありますか、または
- これらのボックスごとに部分ビューを作成し、それぞれが適切なクラスを継承するようにする必要があります (このように機能する可能性さえある場合) または
- この繰り返されるコードをすべてのコントローラーに配置し、ViewData を介してすべての追加データを転送する必要がありますが、これはおそらく悪い方法です :) または
- もっと簡単な方法があるかもしれませんが、私は知りません/見ませんか?
前もってありがとう、イル
編集:
答えが 1 の場合は、マスター ページのコントローラーを作成する方法を説明してください!
編集 2:
このチュートリアルでは、抽象クラスを使用してマスター ページにデータを渡す方法について説明します: http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
"リスト 5 – Controllers\MoviesController.cs "、データは、リポジトリからではなく、LINQ を使用してデータベースから直接取得されます。それで、これはこのチュートリアルだけにあるのでしょうか、それともここにいくつかのトリックがあり、リポジトリは使用できない/使用できないのでしょうか?