3

这更多的是首选方法和任何一种方法的好处的问题。在开发一些数据驱动的控件和带有Repeaters之类的页面时,我陷入了僵局。

我是否创建 ASP.NET 标记(标签等)并将它们内嵌绑定?

<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 与 Inline:优点、缺点和开销)并没有太多令人信服的细节答案。

4

2 回答 2

1

在折腾了一段时间并从同事那里反弹之后,我想我已经得出结论,我最好使用Repeater的ItemDataBound事件将我的值绑定保留在后面的代码中。

标记严格由带有 ID 的 Web 控件组成 - 在我的情况下,主要是标签。如果标记/设计和代码隐藏职责分开,设计人员可以根据需要自由移动标记,开发人员可以控制设置值。设计者不会关心数据绑定表达式。

这也允许一些更整洁和更直观的代码,而不是试图将所有内容都塞进一个表达式中。

我将接受这个作为答案,因为这是我最终使用的解决方案,但我当然仍然对进一步讨论感兴趣。

于 2012-11-16T23:33:48.397 回答
0

这两个完全一样。您的“代码隐藏”版本与 ASP.NET 页面编译成的版本相同。

于 2012-11-14T03:01:17.967 回答