You should make normal MenuController, with some action(for ex. Menu()) and view that renders menu only. in controller, you take values from database, create the model and pass it to the view, and the view renders menu html. In the master page, you just use Html.RenderAction() method and the menu will be drawn in its place on master. The explanation why menuController and menu action should be separate is described in Steven Sanderson's book Professional ASP.NET MVC 2. Idea is simple - with MVC pattern views should carry no application logic - just the view for the user. Menu carries application logic - which menu is selected or highlighted, etc. For details, take a look at that book