2017-07-05 1 views
0

J'ai trouvé cet article de blog: http://blog.bitdiff.com/2012/05/sharing-common-view-model-data-in.html?showComment=1499113088147#c5286707438454380796 sur le partage de données de modèle de vue commune fortement typé dans asp.net mvc, et il me semble qu'il résoudrait les problèmes que j'ai avec le suivi de certains les données relatives à l'utilisateur à travers les vues. Je suis un débutant complet en ce qui concerne DI et Unity comme je ne l'avais jamais utilisé auparavant, mais j'ai une compréhension des avantages de l'utiliser. Le poste est à partir de mai 2012 mais devrait aussi loin que je peux voir encore être valide, peut-être avec quelques petits changements. J'utilise C#, MVC 5, EF, code d'abord, migrations, Unity V4.01 et Unity.MVC V4.01 avec VS2015 Community Edition.Résolution du problème: ActionFilterAttribute dans Unity

J'ai suivi le blogpost du début à la fin (sans le test) et toutes les compilations. J'ai un problème cependant, cette ligne pose des problèmes:

GlobalFilters.Filters.Add(container.Resolve<LayoutModelAttribute>(), 1); 

Pour autant que je peux dire au bon endroit pour appeler lieu la ligne dans le fichier FilterConfig.cs dans le dossier App_start où je l'ai fait:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     var container = UnityConfig.GetConfiguredContainer(); 
     filters.Add(container.Resolve<LayoutModelAttribute>()); 
    } 

Le container.Resolve obtient une ligne ondulée au-dessous et le projet ne compilera pas. La description de l'erreur est la suivante:

« La méthode non-générique IUnityContainer.Resolve (type, chaîne, params ResolverOverride [])" ne peut pas être utilisé avec des arguments de type »

J'ai J'ai essayé d'autres endroits aussi, mais le résultat est le même, je penche maintenant vers la notion que l'Unité elle-même a changé depuis 2012, et doit maintenant être résolue d'une manière différente.

Je suis sûr que je fais quelque chose de mal et que c'est parce que le blogpost date de 2012 et que Unity fonctionne différemment. En raison de mon manque d'expérience avec Unity, je n'arrive pas à comprendre comment modifier la ligne de code qui ne sera pas compilée ou dans quelle mesure et comment refactoriser le blogpost si nécessaire. J'espère que quelqu'un là-bas peut me pointer dans la bonne direction.

+0

Avez-vous essayé d'ajouter un using pour Microsoft.Practices.Unity? –

Répondre