L'onu a essayé par moi-même, mais vous pouvez regarder l'enregistrement de votre point de vue et puis paramétrage de l'affichage des données pendant le processus d'activation.
Parce que les vues sont enregistrées à la volée, l'enregistrement de la syntaxe ne permet pas de vous connecter à l' Activated
de l'événement, vous aurez besoin de définir dans un Module
:
class SetViewBagItemsModule : Module
{
protected override void AttachToComponentRegistration(
IComponentRegistration registration,
IComponentRegistry registry)
{
if (typeof(WebViewPage).IsAssignableFrom(registration.Activator.LimitType))
{
registration.Activated += (s, e) => {
((WebViewPage)e.Instance).ViewBag.Global = "global";
};
}
}
}
Cela pourrait être l'un de ces "seul outil est un marteau"de type suggestions de moi; il y a peut être plus simple MVC-permis de façons d'obtenir à elle.
Edit: Alternes, moins de code à l'approche juste l'attacher à la manette
public class SetViewBagItemsModule: Module
{
protected override void AttachToComponentRegistration(IComponentRegistry cr,
IComponentRegistration reg)
{
Type limitType = reg.Activator.LimitType;
if (typeof(Controller).IsAssignableFrom(limitType))
{
registration.Activated += (s, e) =>
{
dynamic viewBag = ((Controller)e.Instance).ViewBag;
viewBag.Config = e.Context.Resolve<Config>();
viewBag.Identity = e.Context.Resolve<IIdentity>();
};
}
}
}
Edit 2: une Autre approche qui fonctionne directement à partir du contrôleur de code d'enregistrement:
builder.RegisterControllers(asm)
.OnActivated(e => {
dynamic viewBag = ((Controller)e.Instance).ViewBag;
viewBag.Config = e.Context.Resolve<Config>();
viewBag.Identity = e.Context.Resolve<IIdentity>();
});