我构建了一个具有公共属性string[] foo
的用户控件。
是否可以在实际标记中指定?
项目类型是ASP.NET webforms / web application。
我尝试了以下语法,但它不起作用:(它编译但从未分配值。)
<abc:MyControl runat="server" foo='<%# new string[]{"Hello"} %>' />
答案 0 :(得分:2)
您可能会感兴趣PersistenceMode(PersistenceMode.InnerProperty)
。 PersistenceMode
属性允许您使用嵌套属性创建属性。请注意,在这种情况下,您的aspx代码将使用嵌套元素而不是属性,因为元素只能存储字符串。
在这种情况下,你会做类似的事情:
<abc:MyControl runat="server" >
<foo>
<element value="1" />
<element value="2" />
</foo>
</abc:MyControl>
答案 1 :(得分:2)
数据绑定语法只是一种简写。
<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"};
}
尝试这种方式,看看它是否有效。
答案 2 :(得分:0)
我之前从未见过这样的事情,通常对于数组我会这样做:
<abc:MyControl runat="server" foo="This,Is,A,Test" />
public string foo {
get;
set;
}
public string[] foos {
get { return foo.Split(','); }
//set; if needed
}