gpt4 book ai didi

.net - 如何添加一个集合,例如动态数组作为自定义 asp.net 控件的属性?

转载 作者:行者123 更新时间:2023-12-01 11:58:26 25 4
gpt4 key购买 nike

我正在尝试将可动态扩展的属性添加到可以放在设计器表面上的复合控件。我已经用一个字符串数组、一个列表和一个 ArrayList 试过了。都有相似的结果。我错过了一些东西,我不知道是什么。这是我认为相关的代码:

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), 
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)]
public String[] AccessLevels
{
get
{
String[] s = (String[])ViewState["AccessLevels"];
return s;
}

set
{
ViewState["AccessLevels"] = value;
}
}

该控件编译良好,我可以将它放在我的设计器表面上。它在 Visual Studio 2008 的“属性”窗口中为我提供了一个名为“+AccessLevels”的属性,其值为“String[] Array”,旁边有一个省略号 [...]。如果我单击省略号,它会打开一个编辑器,我可以在其中一次插入一行属性。如果我单击“AccessLevels”属性旁边的小加号,它会显示我输入的属性,每个属性旁边都有一个数字,表示数组的索引。伟大的!但是当我这样做时,无论我输入什么值作为属性,以下 HTML 都是由设计者自动生成的。

    <cc2:HBAdmin ID="HBAdmin1" runat="server">
<AccessLevels>
<system.string></system.string>
<system.string></system.string>
<system.string></system.string>
</AccessLevels>
</cc2:HBAdmin>

HBAdmin是我的控件名称,cc2命名空间是正确的。问题是标签。那里应该有一个值吧?我还得到了 标签的智能感知,告诉我“元素‘AccessLevels’的开始和结束标签之间不允许有内容”,还有 标签的验证错误告诉我“元素‘System. String' 不受支持。然后,如果我尝试在浏览器中使用控件查看页面(在设计窗口中编辑导致上述标记的属性之后),我会在带有开始标记的行中收到以下错误控制:

“创建数组必须有数组大小或数组初始值”

只有当我尝试在设计器的属性窗口中编辑属性时才会出现此错误。我可以在构造函数中用值填充属性,带有控件的页面将在浏览器中加载并正常工作,并且这些值在设计图面的属性窗口中显示正常,我可以在整个控件中使用这些值,但是我无法在属性窗口中编辑它们。如果我尝试添加一个,我会遇到与上述相同的症状。

我觉得我可能只是缺少某种属性或声明或其他东西。请帮忙?

最佳答案

您可以使用 Collection<string>而不是 string[]

关于.net - 如何添加一个集合,例如动态数组作为自定义 asp.net 控件的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com