2012-11-14 33 views
3

这是更好的方法和好处的问题。在开发一些数据驱动的控件和页面时,像中继器这样的东西,我会陷入困境。数据绑定控件在线或代码隐藏

我是否创建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 vs Inline: pros, cons and overhead)没有很多答案和令人信服的细节。

+1

我总是发现将尽可能少的内联代码放入页面会更容易,以便将所有代码分组在代码隐藏(我认为属于的地方)。这样我发现我不得不稍后搜索代码。此外,页面上没有智能支持(但可能是错误的,因为很久以前,ASP.NET对我来说已变得很朦胧......),这使得内联更加难以先行。 –

+0

你最喜欢的方法是什么?如果它是一个EVAL直线,我只会使用代码前端。但是有时需要更多的逻辑,并且后面的代码是最好的/唯一的方法。 – MikeSmithDev

+0

@ user643192 - 它确实有一些Intellisense(至少VS2010),我倾向于同样的方法 - 但每个控件的绑定方法在某些页面上看起来非常混乱 –

回答

0

经过一段时间的折腾和同事的反弹之后,我想我已经得出结论,我最好使用Repeater的ItemDataBound事件来保持我的值绑定在后面的代码中。

该标记严格包含带ID的Web控件 - 标签,大部分都是我的情况。如果将标记/设计和代码隐藏责任分开,设计人员可以根据需要随意移动标记,开发人员可以控制设置值。设计师不会关心数据绑定表达式。

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

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

0

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

+0

是的,我明白是这样。这主要是代码风格的问题,以及长期开发大型Web应用程序的一种方法的优势。 –

+0

我不知道这种或那种方式有什么明显的优势。这取决于设计师支持和你的风格。如果您使用设计器,并使用具有良好设计支持的控件进行数据绑定,那么标记/设计器方法将会更快。如果您发现自己在与设计师作战,那么请使用代码隐藏方法。 –