Я только что закончил свою первую ASP.NET MVC (2) CMS. Следующим шагом является создание веб-сайта, который будет отображать данные из базы данных CMS. Это дизайн сайта:
http://img56.imageshack.us/img56/4676/portal.gif http://img56.imageshack.us/img56/4676/portal.gif
# 1 (красная рамка) - отображает категории статей. ViewModel:
public class CategoriesDisplay
{
public CategoriesDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
}
# 2 (коричневая рамка) - отображает последние x статей; пропускает те из зеленой коробки № 3. ViewModel:
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 статей. Использует ту же ViewModel, что и коричневая коробка # 2
# 4 (синяя рамка) - отображение списка предстоящих событий. Использует dataContext.Model.Event
как ViewModel
Боксы № 1, № 2 и № 4 будут повторяться по всему сайту, и они являются частью главной страницы. Итак, мой вопрос: каков наилучший способ передачи этих данных из модели в контроллер и, наконец, для просмотра страниц?
- Должен ли я сделать контроллер для
мастер-страница и класс ViewModel, которые обернут все эти классы вместе ИЛИ
- Должен ли я создавать частичные виды для
каждый из этих ящиков и сделать каждый
из них наследуют соответствующий класс
(если даже возможно, что это
работает так?) ИЛИ
- Должен ли я вставить этот повторный код в
все контроллеры и все дополнительные
передача данных через ViewData, которая
было бы, наверное, хуже пути :) ИЛИ
- Может быть, лучше и больше
простой способ, но я не знаю / вижу это?
Заранее спасибо,
Ile
EDIT:
Если ваш ответ № 1, то, пожалуйста, объясните, как сделать контроллер для главной страницы!
РЕДАКТИРОВАТЬ 2:
В этом руководстве описано, как передать данные на главную страницу с помощью абстрактного класса: http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
В «Листинге 5 - Controllers \ MoviesController.cs» данные извлекаются непосредственно из базы данных с использованием LINQ, а не из репозитория. Итак, мне интересно, если это только в этом уроке, или здесь есть какая-то хитрость, и репозиторий не может / не должен использоваться?