这更像是一个首选方法和两者的好处的问题。当使用像Repeater这样的东西开发一些数据驱动的控件和页面时,我处于一种压力之中。
我是否创建了ASP.NET标签(Label等),并将它们绑定在一起?
<asp:Label ID="companyName" runat="server" Text="<%# ((BillToCustomer)Container.DataItem).CompanyName %>" />
或者最好将.aspx / .ascx文件保留为纯标记并将所有逻辑放在代码隐藏中?
<asp:Label ID="companyName" runat="server" ondatabinding="companyName_DataBinding"/>
protected void legCustomerName_DataBinding(object sender, EventArgs e)
{
((Label)sender).Text = ((BillToCustomer)Page.GetDataItem()).CompanyName;
}
我可以争论自己死于任何一种选择,但在我采用一种方法之前,我想知道所有的事实和意见。
我能够找到讨论这个问题的唯一资源(OnDataBinding vs Inline: pros, cons and overhead)并没有很多令人信服的细节答案。
答案 0 :(得分:0)
这两者完全相同。您的“代码隐藏”版本与ASP.NET页面编译的内容相同。
答案 1 :(得分:0)
在将这个问题折腾了一段时间并从一个同事身上蹦蹦跳跳后,我想我已经得出结论,我最好使用Repeater的ItemDataBound事件在后面的代码中保持我的值绑定。
标记严格由带有ID的Web控件组成 - 标签,主要是在我的情况下。如果标记/设计和代码隐藏责任被拆分,设计者可以根据需要自由移动标记,开发人员可以控制设置值。设计人员不会担心数据绑定表达式。
这也允许一些更整洁,更直观的代码,而不是试图将所有内容塞入一个表达式中。
我将接受这个作为答案,因为这是我最终使用的解决方案,但我当然仍然对进一步的讨论感兴趣。