.Net Repeater等效于单个对象?

sti*_*tib 5 .net webforms repeater custom-server-controls

有人可以尝试推荐解决以下请求的最佳原因:

我使用Repeater类作为Base创建了许多扩展类,并且喜欢这样做的灵活性,易用性和结果.我现在要做的是为单个对象(即不实现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()
Run Code Online (Sandbox Code Playgroud)

这似乎是一件小事,我希望能做的是以下几点:

e.g new call, where my control is the new custom control:

    Dim oObj as New MyObject(1)
    myControl.DataSource = oObj 
    myControl.DataBind()
Run Code Online (Sandbox Code Playgroud)

我希望能够使用各种变量和属性定义此自定义控件,其结果将启用以下类型的布局:

<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>
Run Code Online (Sandbox Code Playgroud)

这种实现必须使用WebForms进行,尽管看起来使用MVC将是考虑上述情况的理想方法.通过这样做,我想创建一个灵活的WebControl,它使用反射(可以用于实现特定接口的所有类),这将生成所需的表单,每次只需要三行代码(上图).

我是否应该只为自定义转发器(DataObject)添加一个属性,该转发器接收一个对象并相应地设置DataSource并节省我的时间?或者,还有更好的方法?

希望这一切都有意义!

干杯,史蒂夫

Cha*_*ant 5

你正在努力解决转发器想要一个List并且你想给它一个实例的事实.只需将其包装在新的List*oObj中,然后继续.它一直都在做.

我当然不知道他们正在使用那个自定义服务器控件.在我看来,你再次努力了.

<asp:repeater id="whatever" runat=server>
   <ItemTemplate>First Name: <%# DataBinder.Eval(Container.DataItem,"FirstName") %></ItemTemplate>
</asp:repeater>
Run Code Online (Sandbox Code Playgroud)