开发者

Using Repeater.ItemDataBound vs Public function. Best performance?

What is best practice and, most importantly, the method that performs best?

I have a repeater where I want to manipulate the html depending on the value of the datasource. But as far as I know there are several ways to do this:

Method #1:


HTML:

<asp:Repeater ID="rptLinks" runat="server">
    <ItemTemplate>
        <li<%#GetLiClass(Container.DataItem("lnk_external")) %>>
            <a href="<%# Container.DataItem("lnk_url") %>" target="_blank"><%#Container.DataItem("lnk_name")%></a>
        </li>
    </ItemTemplate>
</asp:Repeater>

Backend:

Public Function GetLiClass(ByVal bExternal As Boolean) As String
    If bExternal Then
        Return " class=""externalLink"""
    Else
        Return ""
    End If
End Function

Method #2:


HTML:

<asp:Repeater ID="rptLinks" runat="server">
    <ItemTemplate>
        <li runat="server" id="liListElement">
            <a href="<%# Container.DataItem("lnk_url") %>" target="_blank">开发者_Go百科<%#Container.DataItem("lnk_name")%></a>
        </li>
    </ItemTemplate>
</asp:Repeater>

Backend:

Protected Sub rptLinks_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptLinks.ItemDataBound

    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then

        If e.Item.DataItem("lnkExternal") Then
            Dim liListElement As HtmlGenericControl = e.Item.FindControl("liListElement")
            liListElement.Attributes.Add("class", "externalLink")
        End If

    End If

End Sub

So.. Which gives the best performance?

Method #1: Using an inline call to a function that writes out what I want.

Or Method #2 Using Repeater.ItemDataBound to manipulate the elements as I want.

Thanks in advance :)


I prefer the first method and that's what I generally use. However, I use it because I think the code is more readable/understandable than the second method, not because I think it has better performance.

As it happens, I suspect that method #1 probably does have better (theoretical) performance than method #2, but I doubt if this difference could be reliably measured in any real-world tests.

You really shouldn't worry about it. Choose the code that you feel is the most readable/understandable. Any performance bottlenecks in your app won't be anything to do with this choice.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜