我从.NET 2.0迁移到.NET 4.5,我可以选择从Eval
和Container.DataItem
切换到ItemType
+ Item
。但性能呢? Item
如何在内部实施?它是基于Container.DataItem
还是Eval
还是其他什么?
答案 0 :(得分:3)
根据以下链接,Container.DataItem将在运行时使用反射,ItemType将在运行时保存此步骤,因此ItemType应该比Container.DataItem更高性能
What's New in ASP.NET 4.5 and 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>
结论 将.net 4.5中的Container.DataItem替换为ItemType以解决错误问题作为输入问题,并且使用ItemType编译器可以检测输入错误是否有任何错误 < / p>