Asp.net Item vs Container.DataItem vs Eval
我从.NET 2.0迁移到.NET 4.5,我可以选择从Asp.net Item vs Container.DataItem vs Eval,asp.net,performance,data-binding,Asp.net,Performance,Data Binding,我从.NET 2.0迁移到.NET 4.5,我可以选择从Eval和Container.DataItem切换到ItemType+Item。但是性能呢?如何在内部实现项?它是基于容器.DataItem还是Eval还是其他什么 根据以下链接,Container.DataItem将在运行时使用反射,ItemType将在运行时保存此步骤,因此ItemType应该比Container.DataItem性能更好 以前,在使用GridView之类的模板控件时,您可以使用与以下类似的语法声明项: 使用这种语法
Eval
和Container.DataItem
切换到ItemType
+Item
。但是性能呢?如何在内部实现项
?它是基于容器.DataItem
还是Eval
还是其他什么
根据以下链接,Container.DataItem将在运行时使用反射,ItemType将在运行时保存此步骤,因此ItemType应该比Container.DataItem性能更好
以前,在使用GridView之类的模板控件时,您可以使用与以下类似的语法声明项:
使用这种语法,很容易出错,例如键入错误,IDE直到运行时才知道要绑定到的类型。
ASP.NET4.5通过允许您指定项目的类型来解决这些问题
语法如下所示
这是两个句法的主要区别
关于如何在.NET4.5中实现此功能
首先你要上激励课
(我将以GridView为例)
接下来确定ItemType
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="false"
DataKeyNames="SalesID"
SelectMethod="yourGetMethod"
UpdateMethod="yourUpdateMethod"
ItemType="SalesPerson">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Item.SalesID %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label4" runat="server"
Text='<%# Item.SalesID %>'></asp:Label>
</EditItemTemplate>
</asp:TemplateField>
结论在.net 4.5中将Container.DataItem替换为ItemType,以解决作为键入问题的错误问题,并且使用ItemType编译器可以检测是否有任何错误作为键入错误因此
Item
调用Eval
并具有相同的非常糟糕的性能?根据以下链接,ItemType保存了一个步骤,该步骤不会将反射用作Container.DataItem,因此使用ItemType应该比Container.DataItem性能更好
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="false"
DataKeyNames="SalesID"
SelectMethod="yourGetMethod"
UpdateMethod="yourUpdateMethod"
ItemType="SalesPerson">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Item.SalesID %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="Label4" runat="server"
Text='<%# Item.SalesID %>'></asp:Label>
</EditItemTemplate>
</asp:TemplateField>