<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Eval on 冯威的博客</title><link>https://fwhyy.com/tags/eval/</link><description>Recent content in Eval on 冯威的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 26 Jun 2009 00:00:00 +0800</lastBuildDate><atom:link href="https://fwhyy.com/tags/eval/atom.xml" rel="self" type="application/rss+xml"/><item><title>Asp.Net中替代Eval的两种方式</title><link>https://fwhyy.com/2009/06/aspnet-instead-of-eval-in-two-ways/</link><pubDate>Fri, 26 Jun 2009 00:00:00 +0800</pubDate><guid>https://fwhyy.com/2009/06/aspnet-instead-of-eval-in-two-ways/</guid><description>&lt;p&gt;在asp.net中的数据绑定中，我们经常会用到Eval，不过大家都知道Eval绑定是通过反射来实现的， 而反射势必会对性能造成一定的影响。不过有两种替代的方式来实现绑定数据，对性能略有提高。&lt;/p&gt;
&lt;p&gt;1 当数据源为DataTable时，用下面的方式:&lt;/p&gt;
&lt;p&gt;后台代码&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;protected void Page_Load(object sender, EventArgs e)
{
 DataTable dt = new DataTable();
 dt.Columns.Add(&amp;#34;Name&amp;#34;, typeof(System.String));
 dt.Columns.Add(&amp;#34;Age&amp;#34;, typeof(System.Int32));
 for (int i = 0; i &amp;lt;= 20; i++)
 {
 DataRow dr = dt.NewRow();
 dr[0] = &amp;#34;oec2003_&amp;#34; + i.ToString();
 dr[1] = i + 20;
 dt.Rows.Add(dr);
 }

 rptUser.DataSource = dt;
 rptUser.DataBind();
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;前台代码&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;asp:Repeater ID=&amp;#34;rptUser&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;
 &amp;lt;ItemTemplate&amp;gt;
 姓名：&amp;lt;%# ((DataRowView)(Container.DataItem))[&amp;#34;Name&amp;#34;] %&amp;gt;
 年龄：&amp;lt;%# ((DataRowView)(Container.DataItem))[&amp;#34;Age&amp;#34;]%&amp;gt;&amp;lt;br /&amp;gt;
 &amp;lt;/ItemTemplate&amp;gt;
&amp;lt;/asp:Repeater&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2 当数据源为泛型类时，用下面的方式。&lt;/p&gt;
&lt;p&gt;后台代码&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;protected void Page_Load(object sender, EventArgs e)
{
 List&amp;lt;User&amp;gt; user = new List&amp;lt;User&amp;gt;();
 for (int i = 0; i &amp;lt; 10; i++)
 {
 user.Add(new User(i, &amp;#34;oec2003&amp;#34;));
 }
 rptUser.DataSource = user;
 rptUser.DataBind();
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;前台代码&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;asp:Repeater ID=&amp;#34;rptUser&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;
 &amp;lt;ItemTemplate&amp;gt;
 姓名：&amp;lt;%# (Container.DataItem as User).Name %&amp;gt;
 年龄：&amp;lt;%# (Container.DataItem as User).Age%&amp;gt;&amp;lt;br /&amp;gt;
 &amp;lt;/ItemTemplate&amp;gt;
&amp;lt;/asp:Repeater&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;经过测试在10w以上数据量的时候性能差别才比较明显，而我们平时做数据绑定的时候通常都是用的分页存储过程或其他的分页方式，每页最多几十条数据，所以我认为Eval在性能上的损耗并不构成性能瓶颈。&lt;/p&gt;</description></item><item><title>Asp.net 2.0的Eval方法详解</title><link>https://fwhyy.com/2009/01/aspnet-2-0-the-eval-method-of-explanation/</link><pubDate>Wed, 14 Jan 2009 00:00:00 +0800</pubDate><guid>https://fwhyy.com/2009/01/aspnet-2-0-the-eval-method-of-explanation/</guid><description>&lt;p&gt;实际上Eval方法是TemplateControl的，而System.Web.UI.Page和System.Web.UI.UserControl都继承于TemplateControl，所以我们可以在Page和UserControl上直接调用个方法。
Page.Eval方法可以帮助我们更好的撰写数据绑定表达式，在ASP.NET 1.x时代，数据绑定表达式的一般形式是：&lt;/p&gt;</description></item></channel></rss>