c# - 在线与代码隐藏的数据绑定(bind)控件

标签 c# asp.net webforms

这更多是关于首选方法及其优点的问题。在使用 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/

相关文章:

c# - SocketException : An existing connection was forcibly closed under IIS 7, 但在 IIS 6 下正常

C# Excel 互操作 - 从 Range 中删除第一行

asp.net - 我如何允许传递包含不安全词的密码

asp.net - 动态生成的链接按钮不会触发 Onclick 事件 VB.Net

asp.net - 将 TDD 追溯应用到 ASP.Net Web 表单

c# - C# 和 SQL Server Management Studio 中 SQL 查询的执行时间非常不同

c# - 在 Unity 中使用 Getters 和 Setters

asp.net - 使用 __DoPostBack 通过方法名称调用服务器端方法

ASP.NET 站点在开发过程中自动登录

asp.net - 为什么我的转发器控件在回发时为空?