Domanda

sto cercando di iniettare roba in un ViewPage personalizzato (ModelViewPage, da MvcContrib)

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

e le mie registrazioni autofac simile a questa:

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<>));

, ma ottengo questo errore quando provo ad accedere a una visualizzazione:

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 

fossi all'oscuro, ma poi ho guardato App_Web_edit.aspx.b2d4184a.thgwih90.0.cs ed ho trovato questo:

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() {

Naturalmente, i inheritates classe views_skadeanmälan_edit_aspx generati dal mio UKFS.Web.Views.ValidatedModelViewPage, e quando cerca di esempio con il costrutto di default .. così si può risolverlo?

È stato utile?

Soluzione

Non sarà in grado di iniettare nel costruttore ViewPages perché il compilatore genera un aspx ctor vuota e quanto deriva dalla classe base, la vostra base di classe deve avere anche una ctor vuota.

mi piacerebbe guardare per l'iniezione di proprietà, invece, in caso contrario cercare di realizzare il seguente:

  • Trova il luogo in cui sono istanziati viewpages, e di ottenere l'Autofact lì per istanziare pagina
  • ottenere il compilatore aspx per non generare il ctor vuoto

Non so come fare queste cose, quindi mi piacerebbe miro per l'iniezione proprietà invece

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top