1
我通过XSLT动态地从XML创建用户控件。输出是这样的内容的字符串:为什么Page.ParseControl不能创建从正确的基类继承的控件?
<%@ Control Language="C#" AutoEventWireup="true" Inherits="Library.Web.UI.GeneratedFormBase, MyAssembly" %>
<div class="myCssClass">
<asp:TextBox ID="d" runat="server" OnTextChanged="OnTextChanged" />
<asp:Label runat="server" AssociatedControlID="SomeName" AccessKey="n">Label Text</asp:Label>
<asp:TextBox ID="SomeName" runat="server" OnTextChanged="OnTextChanged" />
<asp:Label runat="server" AssociatedControlID="SomeOtherName">Welcome</asp:Label>
<asp:TextBox ID="SomeOtherName" runat="server" OnTextChanged="OnTextChanged" />
<asp:Button ID="OK" runat="server" OnClick="ButtonClick" Text="Save" />
</div>
我现在用Page.ParseControl(theGeneratedString)来动态地创建这种控制。
在Inherits
中声明的类型是存在的并且可以找到。如果我在那里声明另一个(即不存在的)类型,则会抛出异常,所以我完全相信解析器会查找此类型并找到它。
不过,从ParseControl
生成的控件的类型是System.Web.UI.Control,而不是在Inherits-declaration中声明的控件(显然也是解析和定位的)。
这是为什么,我如何确保控件的类型正确?