将非原始值分配给用户控件属性?

时间:2011-02-02 10:00:23

标签: c# asp.net user-controls webforms

我构建了一个具有公共属性string[] foo的用户控件。

是否可以在实际标记中指定?

项目类型是ASP.NET webforms / web application。

我尝试了以下语法,但它不起作用:(它编译但从未分配值。)

<abc:MyControl runat="server" foo='<%# new string[]{"Hello"} %>' />

3 个答案:

答案 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
}