Я думаю, что нашел подходящий обходной путь для моей проблемы.
В получателе свойств Menus для моей конкретной реализации ViewModel я пишу прокси-код, чтобы вернуться обратно в экземплярный контроллер и запросить данные меню. Таким образом, я могу создавать данные меню на лету, когда PartialView запрашивает их. Если PartialView выходит из OutputCache, свойство Menu не будет запрошено.
Итак, моя IMyViewModel выглядит примерно так:
public interface IMyViewModel {
IEnumerable<Menu> Menus { get; }
///<summary>
/// A pointer back to the calling controller, which inherits from the abstract MyBaseController
///</summary>
MyBaseController Controller { get; set; }
}
и моя конкретная реализация меню выглядит примерно так:
public IEnumerable<Menu> Menus
{
get { return Controller.GetMenus(); }
}
Комментарии? Это жизнеспособное решение?