Vous êtes sur la bonne voie avec l'idée de contrôleur de base, mais je voudrais remplacer OnActionExecuted et générer les données là-bas. Vérifiez si le résultat va être un ViewResult avant de générer les données communes. Il n'est pas nécessaire de générer les données si le résultat est une redirection ou des données remontant via AJAX.
Vous pouvez également envisager de créer un modèle de vue seule pour les données communes (si les données sont étendues) et de les placer dans ViewData dans son ensemble. Vous pouvez ensuite créer une vue partielle fortement typée qui prend le modèle et utilise plus facilement les propriétés du modèle dans la vue. Le rendu de cette vue partielle à partir de la page maître faciliterait l'incorporation des données sur chaque page et l'utiliserait de manière fortement typée.
Si les données de pied de page ou le formatage ne sont pas compliqués, il suffit probablement de placer la marque dans la page maître.