我有一个复合数据绑定控件:带有 MyItemTemplate 和 MyContainer 容器的 MyGrid。我有一个类用户。
public class MyGrid: CompositeDataBoundControl
{
[TemplateContainer(typeof(MyGrid.MyContainer))]
public ITemplate MyItemTemplate
{
//get;set;
}
public class MyContainer: Control, INamingContainer
{
//return DataItem of type User
}
//rest of all code
}
这有助于我使用:<%# Container.DataItem.FirstName %>
其中 FirstName 是用户类中的一个属性。
现在我想让它成为一个通用网格,即MyGrid<T>
所以我必须像这样修改我的 TemplateContainer:
[TemplateContainer(typeof(MyGrid<>.MyContainer))]
MyGrid 类编译良好,没有任何错误:我创建了一个具体的类,即
MyUserGrid: MyGrid<User>
它也编译得很好。但是 ASP.NET 不喜欢这样。我的意思是类本身编译没有错误,但我不能再使用:
<%# Container.DataItem.User.FirstName %>
任何帮助/想法如何使这个类型化网格成为通用类型化网格?
这是我发现的,看起来有点复杂。这是正确和唯一的方法吗?我不想像在链接中那样在属性中传递类型。相反,我将通过从泛型类派生来创建我的具体类。
我的尝试不断给我这个错误:Invalid expression term '>'
添加:它是 ASP.NET 2.0 WebForms