2012-08-01 63 views
1

我在我的代碼隱藏中有一個公共屬性,我想將其綁定到.aspx頁面中的控件。如果我使用Page.DataBind()它可以工作,但我不想使用它,因爲這會導致遞歸數據綁定到所有控件。如何停止Page.DataBind()的遞歸調用?

即使Page.DataBind()有一個接受布爾值的重載方法,表示是否要遞歸調用它,但它會是一個更好的選擇,但此時它只會由於遞歸而降低性能。

我唯一的目標是將我的代碼隱藏頁面中的公共/受保護的屬性綁定到我的.aspx頁面。有沒有更好的選擇?

回答

3

我猜你的綁定代碼somethong像

<%# MyProperty %> 

只有當如果你打電話Page.DataBind()會發生這種約束力,但如果你寫:

<%= MyProperty %> 

那麼你不必致電Page.DataBind()

2

接受的答案適用於簡單顯示值,但不適用於在服務器標記中使用數據綁定值,例如

<asp:Literal Visible='<%# IsNewApplication %>' runat="server">New Application</asp:Literal> 

我發現越來越這一輪的唯一方式是使用PlaceHolder控制隔離綁定標籤的塊,然後在PlaceHolder稱爲DataBind()

這是由你來確定這是或多或少醜陋/適當的比在代碼中設置可見性!

+0

我創建了自己的「自定義」控件,它允許「自動綁定」(不需要手動調用DataBind)和「綁定傳播停止」(因爲有些事情不應該再次綁定數據) .. +1因爲大部分時間我發現'<%# .. %>'有用的控制屬性和'<%= .. %>'只有很少用處。 – 2012-10-24 22:18:57

+0

是的,綁定傳播停止將是一個非常方便的功能。我通常是在臨時的基礎上做的,像你這樣的控制框架是一個明顯的改進:o) – Whelkaholism 2012-11-13 15:57:48