Cómo crear una página maestra fuertemente tipada usando un controlador base en ASP.NET MVC

Siguiendo el NerdDinners ejemplo, estoy interesado en crear una página maestra fuertemente tipada. Para lograr esto, utilizo un controlador base que recupera los datos de la página maestra. Todos los demás controladores heredan esta clase. Del mismo modo, tengoViewModels para la página maestra y cualquier otra vista. La vistaViewModelas clases @ heredan de la página maestraViewModel.

Pregunt

¿Cómo debería un controlador secundario asegurarse de que los datos de la página maestra se pasen a la Vista sin establecer las propiedades de suViewModel que pertenecen a la página maestra en sí?

Mi página maestra mostrará una serie de botones, que se determinan en un archivo XML, de ahí laButtons clase que estoy poblando.

MasterPage ViewModel Code Snippet

using System.Collections.Generic;

namespace Site1.Models
{
    public class MasterViewModel
    {
        public List<Button> Buttons{set; get;}
    }
}

ViewViewModel

namespace Site1.Models
{
    public class View1ViewModel : MasterViewModel
    {
        public SomeDataClass SomeData { get; set; }
    }
}
Base Controller
using System.Collections.Generic;
using System.Web.Mvc;
using Site1.Models;

namespace Site1.Controllers
{
    public abstract class BaseController : Controller
    {
        protected MasterViewModel model = new MasterViewModel();

        public BaseController()
        {
            model.Buttons = new List<Button>();
            //populate the button classes (doesn't matter how)
            PopulateButtons(model.Buttons);
        }
    }
}

Controlador de vista:

using System.Web.Mvc;

namespace Site1.Controllers
{
    public class View1Controller : BaseController
    {
        public ActionResult Index()
        {
            Models.View1ViewModel viewModel = new Models.View1ViewModel();
            SomeDataClass viewData = new SomeDataClass()
            //populate data class (doesn't matter how)
            PopulateDataClass(viewData);
            viewModel.SomeData = viewData;
            //I WANT TO ELIMINATE THE FOLLOWING LINE!
            viewModel.Buttons = model.Buttons;
            return View("Index", viewModel);
        }
    }
}

La página maestra heredaSystem.Web.Mvc.ViewMasterPage<Site1.Models.MasterViewModel>.

La vista heredaSystem.Web.Mvc.ViewMasterPage<Site1.Models.View1ViewModel>.

Respuestas a la pregunta(2)

Su respuesta a la pregunta