asp.net mvc2 - controller for master page and code organization
        Posted  
        
            by ile
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by ile
        
        
        
        Published on 2010-04-02T18:08:34Z
        Indexed on 
            2010/04/02
            20:53 UTC
        
        
        Read the original article
        Hit count: 1019
        
asp.net-mvc
|code-organization
I've just finished my first ASP.NET MVC (2) CMS. Next step is to build website that will show data from CMS's database. This is website design:

#1 (Red box) - displays article categories. ViewModel:
public class CategoriesDisplay
    {
        public CategoriesDisplay() { }
        public int CategoryID { set; get; }
        public string CategoryTitle { set; get; }
    }
#2 (Brown box) - displays last x articles; skips those from green box #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 (green box) - Displays last x articles. Uses the same ViewModel as brown box #2
#4 (blue box) - Displays list of upcoming events. Uses dataContext.Model.Event as ViewModel
Boxes #1, #2 and #4 will repeat all over the site and they are part of Master Page. So, my question is: what is the best way to transfer this data from Model to Controller and finally to View pages?
- Should I make a controller for master page and ViewModel class that will wrap all this classes together OR
 - Should I create partial Views for every of these boxes and make each of them inherit appropriate class (if it is even possible that it works this way?) OR
 - Should I put this repeated code in all controllers and all additional data transfer via ViewData, which would be probably the worse way :) OR
 - There is maybe a better and more simple way but I don't know/see it?
 
Thanks in advance,
Ile
EDIT:
If your answer is #1, then please explain how to make a controller for master page!
EDIT 2:
In this tutorial is described how to pass data to master page using abstract class: http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
In "Listing 5 – Controllers\MoviesController.cs", data is retrieved directly from database using LINQ, not from repository. So, I wonder if this is just in this tutorial, or there is some trick here and repository can't/shouldn't be used?
© Stack Overflow or respective owner