2012-11-14 38 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

我不知道這種或那種方式有什麼明顯的優勢。這取決於設計師支持和你的風格。如果您使用設計器,並使用具有良好設計支持的控件進行數據綁定,那麼標記/設計器方法將會更快。如果您發現自己在與設計師作戰,那麼請使用代碼隱藏方法。 –