我建立了一個擁有公共屬性string[] foo
的用戶控件。將非基元值分配給用戶控件屬性?
是否可以在實際標記中分配此值?
項目的類型是ASP.NET webforms/web應用程序。
我試過下面的語法,但它不起作用:(它編譯但值從未分配)。
<abc:MyControl runat="server" foo='<%# new string[]{"Hello"} %>' />
我建立了一個擁有公共屬性string[] foo
的用戶控件。將非基元值分配給用戶控件屬性?
是否可以在實際標記中分配此值?
項目的類型是ASP.NET webforms/web應用程序。
我試過下面的語法,但它不起作用:(它編譯但值從未分配)。
<abc:MyControl runat="server" foo='<%# new string[]{"Hello"} %>' />
我從來沒有見過這樣的事情之前,通常用於數組我做這樣的事情:
<abc:MyControl runat="server" foo="This,Is,A,Test" />
public string foo {
get;
set;
}
public string[] foos {
get { return foo.Split(','); }
//set; if needed
}
您可能會發現PersistenceMode(PersistenceMode.InnerProperty)
是感興趣的。 PersistenceMode
屬性允許您創建具有嵌套屬性的屬性。請注意,在這種情況下,您的aspx代碼將使用嵌套元素而不是屬性,因爲元素只能存儲字符串。
在這種情況下,你會做這樣的事情:
<abc:MyControl runat="server" >
<foo>
<element value="1" />
<element value="2" />
</foo>
</abc:MyControl>
數據綁定語法只是一個簡寫。
<abc:MyControl runat="server" ID="control1" foo='<%# new string[]{"Hello"} %>' />
是
<abc:MyControl runat="server" ID="control1" OnDatabinding="Databind_control1" />
protected void Databind_control1(object sender, EventArgs e)
{
((MyControl) sender).foo = new string[]{"Hello"};
}
速記嘗試這種方式,看看它是否工作。
有趣。我沒有檢查,但我認爲只有在控件實現了某個接口後才調用DataBinding事件? – maxp 2011-02-02 16:59:06