我从.NET 2.0迁移到.NET 4.5,并且我可以选择从Eval
和Container.DataItem
切换到ItemType
+Item
。但是性能呢?Item
是如何在内部实现的?它是基于Container.DataItem
还是Eval
或其他什么?
更新
根据下面的链接,Container.DataItem在运行时将使用反射,ItemType将在运行时保存此步骤,因此ItemType应该比Container.DataItem更具性能
ASP.NET 4.5和Visual Studio 2012的新增功能
以前,当使用GridView等模板控件时,您会使用类似以下语法声明项:<%# DataBinder.Eval(Container.DataItem, "Price") %>
有了这种语法,很容易出错,比如打字错误,IDE直到运行时才知道要绑定的类型。ASP.Net 4.5通过允许您指定项目的类型来解决这些问题语法如下<%# Item.ID>
这是两种语法之间的主要区别。
关于如何在.net 4.5中实现第一个你阻抗类
(我将以GridView为例)
public class SalesPerson
{
public string SalesPersonID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
接下来您确定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>
结论Container.DataItem在.net 4.5中被替换为ItemType,以解决作为键入问题的错误问题,使用ItemType编译器可以检测是否有任何错误作为键入错误