ASP.NET WebForms 和 SimpleInjector FindControl 不抛出无参数构造函数
ASP.NET WebForms and SimpleInjector FindControl throws no parameterless constructor
我在 Asp.NET (4.5) 和 Simple Injector 中有 Web 应用程序。所有应用程序都可以正常工作,Simple Injector 也可以。但问题出在 FormView:
<asp:FormView ID="MyFv" runat="server">
<InsertItemTemplate>
<label id="myLblTest" runat="server">fffff</label>
</InsertItemTemplate>
</asp:FormView>
并且在 cs 中我尝试获得这个标签:
protected void Page_Load(object sender, EventArgs e)
{
Control testDDL = MyFv.FindControl("myLblTest");
但是 testDDL 为 null,并且使用带有 ObjectDataSource 的更复杂的表单视图会抛出异常:
For this object is not defined constructor with no parameters
堆栈跟踪:
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 时,它可以正常工作。
谢谢
问题出在 ObjectDataSource 上。在 ObjectCreating 事件中,我分配给了具有无参数构造函数的 ObjectDataSource class,现在它可以工作了。
我在 Asp.NET (4.5) 和 Simple Injector 中有 Web 应用程序。所有应用程序都可以正常工作,Simple Injector 也可以。但问题出在 FormView:
<asp:FormView ID="MyFv" runat="server">
<InsertItemTemplate>
<label id="myLblTest" runat="server">fffff</label>
</InsertItemTemplate>
</asp:FormView>
并且在 cs 中我尝试获得这个标签:
protected void Page_Load(object sender, EventArgs e)
{
Control testDDL = MyFv.FindControl("myLblTest");
但是 testDDL 为 null,并且使用带有 ObjectDataSource 的更复杂的表单视图会抛出异常:
For this object is not defined constructor with no parameters
堆栈跟踪:
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 时,它可以正常工作。
谢谢
问题出在 ObjectDataSource 上。在 ObjectCreating 事件中,我分配给了具有无参数构造函数的 ObjectDataSource class,现在它可以工作了。