1) Если предполагается, что ваша функциональность меню существует на нескольких страницах, то имеет смысл поместить ее на главную страницу. Если нет, то нормальный вид.
2) Популярный выбор - сделать так, чтобы все ваши ViewModels наследовали от базового класса представления, а затем ваша мастер-страница использует это. Пример:
System.Web.Mvc.ViewMasterPage<ViewBase>
System.Web.Mvc.ViewPage<MyViewModel>
public class MyViewModel : ViewBase { }
3) Вы можете извлечь конкретный контроллер из данных маршрута. Однако, если вам нужны определенные функции для определенных контроллеров, я бы просто предложил использовать другую главную страницу для этих представлений, чем пытаться заставить все ваши представления использовать одну и ту же главную страницу.