有人可以尝试推荐最佳的行动理由来解决以下请求:
我已经创建了许多使用 Repeater 类作为基础的扩展类,并且喜欢这样做的灵活性、易用性和结果。我现在要做的是为单个对象(即未实现 IListSource 或 IEnumerable 的 DataSource)制作类似的自定义 Web 控件。我已经通过扩展转发器创建了我想要实现的结构,然后在设置数据源时使用 1 个项目的列表来保存对象,然后进行数据绑定。
e.g a rough example:
Dim oObj as New MyObject(1)
Dim gl As New Generic.List(of MyObiect)()
gl.Add(oObj)
rpt.DataSource = gl
rpt.DataBind()
这似乎是一个小技巧,我想做的是以下几点:
e.g new call, where my control is the new custom control:
Dim oObj as New MyObject(1)
myControl.DataSource = oObj
myControl.DataBind()
我希望能够使用各种变量和属性定义此自定义控件,其结果将启用以下类型的布局:
<My:ObjControl ID="frm" runat="server">
<Tabs>
<My:Tab name="Details">
<Items>
<My:Item Type="Text" Label="First Name" Property="FirstName" />
<My:Item Type="Text" Label="Last Name" Property="LastName" />
<My:Item Type="Text" Label="Title" Property="Title" />
</Items>
</Tab>
<My:Tab name="Address">
<Items>
<My:Item Type="Text" Label="Address 1" Property="Address1" />
<My:Item Type="Text" Label="Address 2" Property="Address2" />
<My:Item Type="Text" Label="Address 3" Property="Address3" />
</Items>
</Tab>
</Tabs>
</My:ObjControl>
此实现必须使用 WebForms 进行,尽管考虑到上述情况,使用 MVC 似乎是理想的方法。通过这样做,我想创建一个灵活的 WebControl,它使用反射(可用于实现特定接口的所有类),它将生成所需的表单,每次需要时只需要后面(上面)三行代码。
我是否应该将一个属性添加到一个自定义中继器(DataObject),该中继器接受一个对象并相应地设置 DataSource 并节省我的时间?或者,还有更好的方法?
希望这一切都有意义!
干杯,史蒂夫