Data Binding似乎是ASP.NET老掉牙的节目,无非Eval之流。其实稍作加工就能使其脱胎换骨。
在代码中加入:
//推荐放在基类
protected virtual object ExpHelper<TEntity, TREsult>(Func<TEntity, TREsult> func)
{
var itm = GetDataItem();
return func((TEntity)itm);
}
//Student是数据类
protected object Stu<TResult>(Func<Student, TResult> func)
{
return ExpHelper<Student, TResult>(func);
}
这样在ASPX页面就可以用强类型的Eval了
<table>
<asp:Repeater runat="server">
<ItemTemplate>
<tr>
<td>
<%#Stu(_=>_.Id)%>
</td>
<td>
<%#Stu(_=>_.User.Name)%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
由于不是反射,性能大为提升并且语法具有intellisense,很酷吧。
我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!我要发布!!