Asp.net Item vs Container.DataItem vs Eval

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之类的模板控件时,您可以使用与以下类似的语法声明项: 使用这种语法

我从.NET 2.0迁移到.NET 4.5,我可以选择从
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>