2011-03-08 99 views
21

假設我有這樣UserControl(* .ascx)中的自定義屬性?

<MyTag:MyWidget runat="server" /> 

用戶控件我想知道如果我可以這樣做

<MyTag:MyWidget runat="server" MemberHeight="400" PublicHeight="200" /> 

因此,在MyWidget.ascx我可以有

<div height="<%=IsLoggedIn ? MemberHeight : PublicHeight%>"> 

或像那樣的東西......?因爲我希望每個使用此小部件的頁面的高度都不相同。

+1

你試過了嗎?在UserControl中公開屬性是可能的,如果它是aspx標記中的UserControl的標準屬性(如Visible),可以設置它。這些屬性必須是可序列化的(f.e。String或Integer)。 – 2011-03-08 23:15:53

回答

28

公共屬性添加到控件類像...

public int MySize { get; set; } 
+1

這是正確的答案(儘管在你的情況下,你會添加兩個名爲MemberHeight和PublicHeight的屬性)。 – Jacob 2011-03-08 23:16:03

+0

似乎它不工作,如果你聲明屬性爲受保護的。你知道爲什麼嗎? – fengd 2011-04-21 19:34:54

+0

@ Jun1st - 'protected'意味着只有擴展類可以訪問該屬性。在這種情況下,它是需要訪問屬性的不同頁面/控件。 – 2012-04-17 19:08:05

11

您需要爲這兩個項目定義的公共屬性,因爲這樣的:

public int MemberHeight{ get; set; } 
public int PublicHeight{ get; set; }