2015-02-03 5 views
1

У меня есть веб-приложение в Asp.NET (4.5) и Simple Injector. Все приложения работают правильно и Simple Injector. Но проблема с FormView:ASP.NET WebForms и SimpleInjector FindControl не генерирует без параметров конструктор

<asp:FormView ID="MyFv" runat="server"> 
          <InsertItemTemplate> 
           <label id="myLblTest" runat="server">fffff</label> 
          </InsertItemTemplate> 
         </asp:FormView> 

И в сСт я пытаюсь получить эту метку:

protected void Page_Load(object sender, EventArgs e) 
     { 
      Control testDDL = MyFv.FindControl("myLblTest"); 

но testDDL равно нулю и с более сложными formviews с ObjectDataSource он бросает исключение:

For this object is not defined constructor with no parameters 

StackTrace:

w System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 
     w System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) 
     w System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) 
     w System.Activator.CreateInstance(Type type, Boolean nonPublic) 
     w System.Activator.CreateInstance(Type type) 
     w System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) 
     w System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) 

Когда этот вид был на сайте и без SimpleInjector, он работал без проблем.

Thanks

+0

Контроллеры зарегистрированы в контейнере? – janhartmann

+0

ASP.NET WebForms не имеют контроллеров. В контейнере зарегистрирован класс из нижнего уровня: бизнес-уровень и уровень доступа к данным – Robert

+0

О, извините. Мой плохой - Как настроен ваш инжектор SImple? И могу ли я увидеть весь источник страницы? Также см. Параграф: http://simpleinjector.readthedocs.org/en/latest/webformsintegration.html – janhartmann

ответ

1

Проблема была в ObjectDataSource. В случае ObjectCreating, которое я назначил классу ObjectDataSource, который имеет безпараметрический конструктор, и теперь он работает.