Question

Je suis en train d'injecter des choses dans un ViewPage personnalisé (ModelViewPage, de MvcContrib)

public class ValidatedModelViewPage<T> : ModelViewPage<T> where T : class
{
    public ValidatedModelViewPage(IEnumerable<IBehavior<IMemberElement>> elementBehaviors)
       : base(elementBehaviors.ToArray()) { }
}

et mes inscriptions Autofac ressemblent à ceci:

builder.RegisterCollection<IBehavior<IMemberElement>>().As<IEnumerable<IBehavior<IMemberElement>>>();
builder.Register<NotNullBehavior>().MemberOf<IEnumerable<IBehavior<IMemberElement>>>();
builder.Register<StringLenghBehavior>().MemberOf<IEnumerable<IBehavior<IMemberElement>>>();

builder.RegisterGeneric(typeof(ValidatedModelViewPage<>));

mais je reçois cette erreur lorsque je tente d'accéder à une vue:

Compiler Error Message: CS1729: 'UKFS.Web.Views.ValidatedModelViewPage<UKFS.Data.Entities.Skadeanmälan>' does not contain a constructor that takes '0' arguments

Source Error:

Line 194:        private static object @__fileDependencies;
Line 195:        
Line 196:        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 197:        public views_skadeanmälan_edit_aspx() {
Line 198:            string[] dependencies;


Source File: c:\Users\Carl\AppData\Local\Temp\Temporary ASP.NET Files\root\be9ddc15\a84d5058\App_Web_edit.aspx.b2d4184a.thgwih90.0.cs    Line: 196 

i étaient désemparés, mais je regardais App_Web_edit.aspx.b2d4184a.thgwih90.0.cs et trouvé ceci:

Line 190:      public class views_skadeanmälan_edit_aspx : UKFS.Web.Views.ValidatedModelViewPage<Skadeanmälan>, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler {
Line 191:          
Line 192:          private static bool @__initialized;
Line 193:          
Line 194:          private static object @__fileDependencies;
Line 195:          
Line 196:          [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 197:          public views_skadeanmälan_edit_aspx() {

bien sûr, les views_skadeanmälan_edit_aspx de classe générée inheritates de mon UKFS.Web.Views.ValidatedModelViewPage, et quand il essaie d'exemple avec la construction par défaut .. Pouvez-vous le résoudre?

Était-ce utile?

La solution

Vous ne pourrez constructeur injecter dans ViewPages parce que le compilateur ASPX génère un vide cteur et elle découle de votre classe de base, votre classe de base doit également avoir un cteur vide.

Je cherche une injection de propriété au lieu, sinon essayez d'accomplir ce qui suit:

  • Trouvez l'endroit où viewpages sont instanciés, et obtenir le Autofact là pour instancier la page
  • obtenir le compilateur ASPX pour ne pas générer le cteur vide

Je ne sais pas comment faire ces choses, donc je vise pour l'injection de propriété au lieu

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top