1


0

カスタムViewPageへの依存性注入が奇妙なエラーを生成します

カスタムViewPage(ModelViewPage、MvcContribから)にデータを注入しようとしています

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

Autofacの登録は次のようになります。

builder.RegisterCollection>().As>>();
builder.Register().MemberOf>>();
builder.Register().MemberOf>>();

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

しかし、ビューにアクセスしようとするとこのエラーが発生します:

Compiler Error Message: CS1729: 'UKFS.Web.Views.ValidatedModelViewPage' 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

私は無知でしたが、その後App_Web_edit.aspx.b2d4184a.thgwih90.0.csを見て、これを見つけました:

Line 190:      public class views_skadeanmälan_edit_aspx : UKFS.Web.Views.ValidatedModelViewPage, 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() {

もちろん、生成されたクラスviews_skadeanmälan_edit_aspxは、私のUKFS.Web.Views.ValidatedModelViewPageから継承し、デフォルトのコンストラクトでインスタンス化しようとします。 解決できますか?

1 Answer


1


aspxコンパイラは空のctorを生成し、ベースクラスから派生するため、ベースクラスにも空のctorが必要なため、ViewPagesにコンストラクターを挿入することはできません。

代わりにプロパティインジェクションを探します。そうでない場合は、次のことを実行します。

  • ビューページがインスタンス化される場所を見つけ、Autofactを取得します そこにページをインスタンス化する

  • 空のctorを生成しないようにaspxコンパイラーを取得します

私はそれらのことをする方法がわからないので、代わりにプロパティインジェクションを目指します