这更多是关于首选方法及其优点的问题。在使用 Repeater 之类的东西开发一些数据驱动的控件和页面时,我陷入了僵局。
我是否创建 ASP.NET 标记(Label 等),并在线绑定(bind)它们?
<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 ) 没有很多具有令人信服的细节的答案。
最佳答案
在折腾了一段时间并从同事那里反弹之后,我想我已经得出结论,我最好使用 Repeater 的 ItemDataBound 事件将我的值绑定(bind)在后面的代码中。
标记严格由带有 ID 的 Web 控件组成 - 标签,在我的情况下主要如此。如果标记/设计和代码隐藏的职责被分开,设计人员可以根据需要自由移动标记,而开发人员可以控制设置值。设计者不会关心数据绑定(bind)表达式。
这还允许编写一些更简洁、更直观的代码,而不是试图将所有内容都塞进一个表达式中。
我将接受这个作为答案,因为这是我最终使用的解决方案,但我当然仍然对进一步讨论感兴趣。
关于c# - 在线与代码隐藏的数据绑定(bind)控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372358/