什么是最佳做法,最重要的是,哪种方法表现最佳?
我有一个转发器,我想根据数据源的值来操作html。但据我所知,有几种方法可以做到这一点:
方法#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>
后端:
Public Function GetLiClass(ByVal bExternal As Boolean) As String
If bExternal Then
Return " class=""externalLink"""
Else
Return ""
End If
End Function
方法#2:
HTML:
<asp:Repeater ID="rptLinks" runat="server">
<ItemTemplate>
<li runat="server" id="liListElement">
<a href="<%# Container.DataItem("lnk_url") %>" target="_blank"><%#Container.DataItem("lnk_name")%></a>
</li>
</ItemTemplate>
</asp:Repeater>
后端:
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
那么..哪个性能最好?
方法#1: 使用内联调用写出我想要的函数。
或方法#2 使用Repeater.ItemDataBound来操作我想要的元素。
提前致谢:)
答案 0 :(得分:2)
我更喜欢第一种方法,而这正是我通常使用的方法。但是,我使用它是因为我认为代码比第二种方法更易读/可理解,不因为我认为它具有更好的性能。
实际上,我怀疑方法#1可能确实具有比方法#2更好的(理论上)性能,但我怀疑在任何实际测试中是否可以可靠地测量这种差异。
你真的不应该担心它。选择您认为最易读/易懂的代码。您的应用中的任何性能瓶颈都与此选择无关。