替代Eval的两种方式

本文介绍了在ASP.NET中使用Eval进行数据绑定时可能遇到的性能问题,并提供了两种替代方案,一种适用于DataTable数据源,另一种适用于泛型类数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

asp.net中的数据绑定中,我们经常会用到Eval,不过大家都知道Eval绑定是通过反射来实现的,而反射势必会对性能造成一定的影响。不过有两种替代的方式来实现绑定数据,对性能略有提高。

       1 当数据源为DataTable时,用下面的方式:

1         protected void Page_Load(object sender, EventArgs e)
 2         {
 3             DataTable dt = new DataTable();
 4             dt.Columns.Add("Name"typeof(System.String));
 5             dt.Columns.Add("Age"typeof(System.Int32));
 6             for (int i = 0; i <= 20; i++)
 7             {
 8                 DataRow dr = dt.NewRow();
 9                 dr[0= "oec2003_" + i.ToString();
10                 dr[1= i + 20;
11                 dt.Rows.Add(dr);
12             }
13 
14             rptUser.DataSource = dt;
15             rptUser.DataBind();
16         }

1 <asp:Repeater ID="rptUser" runat="server">
2    <ItemTemplate>
3       姓名:<%# ((DataRowView)(Container.DataItem))["Name"]  %>
4       年龄:<%# ((DataRowView)(Container.DataItem))["Age"]%><br />
5    </ItemTemplate>
6 </asp:Repeater>
7 

       2 当数据源为泛型类时,用下面的方式:

1  protected void Page_Load(object sender, EventArgs e)
 2 
 {
 3      List<User> user = new List<User>
();
 4      for (int i = 0; i < 10; i++
)
 5 
     {
 6         user.Add(new User(i, "oec2003"
));
 7 
     }
 8 

 9      rptUser.DataSource = user;
10 
     rptUser.DataBind();
11  }
 

1  < asp:Repeater  ID ="rptUser"  runat ="server" >
2       < ItemTemplate >
3         姓名: <% # (Container.DataItem  as  User).Name   %>
4         年龄: <% # (Container.DataItem  as  User).Age %> < br  />        
5       </ ItemTemplate >
6  </ asp:Repeater >
7 

 

 

      经过测试在10w以上数据量的时候性能差别才比较明显,而我们平时做数据绑定的时候通常都是用的分页存储过程或其他的分页方式,每页最多几十条数据,所以我认为Eval在性能上的损耗并不构成性能瓶颈。

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值