C# 将数组作为服务器标记发送';s属性
我想知道是否可以向标记的属性发送字符串数组C# 将数组作为服务器标记发送';s属性,c#,asp.net,C#,Asp.net,我想知道是否可以向标记的属性发送字符串数组 <SampleTag:Form runat="server" ID="sampleform1" Items={item1,item2,item3,item4} > </SampleTag:Form> 这不起作用,因为它将“{item1,item2,item3,item4}”作为字符串发送给类。最好在代码隐藏中这样做 <SampleTag:Form runat="server" ID="samplef
<SampleTag:Form
runat="server"
ID="sampleform1"
Items={item1,item2,item3,item4}
>
</SampleTag:Form>
这不起作用,因为它将“{item1,item2,item3,item4}”作为字符串发送给类。最好在代码隐藏中这样做
<SampleTag:Form runat="server" ID="sampleform1"></SampleTag:Form>
sampleform1.Items = new { item1, item2, item3, item4 };
sampleform1.Items=new{item1,item2,item3,item4};
最好在代码隐藏中执行此操作
<SampleTag:Form runat="server" ID="sampleform1"></SampleTag:Form>
sampleform1.Items = new { item1, item2, item3, item4 };
sampleform1.Items=new{item1,item2,item3,item4};
您可能必须向属性添加属性,但您应该能够继续使用xml端执行分配:
<SampleTag:Form
runat="server"
ID="sampleform1">
<Items ID="item1">item1</Items>
<Items ID="item2">item2</Items>
<Items ID="item3">item3</Items>
<Items ID="item4">item4</Items>
</SampleTag>
项目1
项目2
项目3
项目4
本文可能会提供一些额外的见解:您可能需要向属性添加属性,但您应该能够继续使用xml端来执行分配:
<SampleTag:Form
runat="server"
ID="sampleform1">
<Items ID="item1">item1</Items>
<Items ID="item2">item2</Items>
<Items ID="item3">item3</Items>
<Items ID="item4">item4</Items>
</SampleTag>
项目1
项目2
项目3
项目4
本文可能会提供一些额外的见解:我知道您已经接受了答案,但我想让您知道,使用类型转换器可以完成您正在尝试的操作。我更喜欢这种方法,因为它使控件对设计者更友好,也更易于他人使用 使用:(对不起,VB代码…)
代码:
关键是在属性上使用TypeConverter属性(有关定义,请参见此类后面的内容)
公共类ServerControl1
继承网络控制
_
公共属性项()作为字符串()
得到
如果ViewState(“项目”)不是空的,那么
返回视图状态(“项目”)
其他的
返回新字符串(){}
如果结束
结束
设置(ByVal值为String())
视图状态(“项目”)=值
端集
端属性
受保护的覆盖子呈现(ByVal编写器作为System.Web.UI.HtmlTextWriter)
MyBase.Render(编写器)
对于项目中的每个字符串
Write.Write(String.Format(“-{0}
”,s))
下一个
端接头
末级
公共类StringToArray
继承类型转换器
公共重载将函数CanConvertFrom(ByVal上下文作为ITypeDescriptorContext,ByVal sourceType作为类型)重写为布尔值
如果sourceType是GetType(字符串),则
返回真值
如果结束
返回MyBase.CanConvertFrom(上下文,源类型)
端函数
公共重载将函数ConvertFrom(ByVal上下文作为ITypeDescriptorContext,ByVal区域性作为CultureInfo,ByVal值作为Object)重写为Object
如果值的类型为字符串,则
Dim v As String()=CStr(value).Split(新字符(){”,“c})
返回v
如果结束
返回MyBase.ConvertFrom(上下文、区域性、值)
端函数
末级
我知道您已经接受了答案,但我想让您知道,使用类型转换器可以完成您正在尝试的操作。我更喜欢这种方法,因为它使控件对设计者更友好,也更易于他人使用
使用:(对不起,VB代码…)
代码:
关键是在属性上使用TypeConverter属性(有关定义,请参见此类后面的内容)
公共类ServerControl1
继承网络控制
_
公共属性项()作为字符串()
得到
如果ViewState(“项目”)不是空的,那么
返回视图状态(“项目”)
其他的
返回新字符串(){}
如果结束
结束
设置(ByVal值为String())
视图状态(“项目”)=值
端集
端属性
受保护的覆盖子呈现(ByVal编写器作为System.Web.UI.HtmlTextWriter)
MyBase.Render(编写器)
对于项目中的每个字符串
Write.Write(String.Format(“-{0}
”,s))
下一个
端接头
末级
公共类StringToArray
继承类型转换器
公共重载将函数CanConvertFrom(ByVal上下文作为ITypeDescriptorContext,ByVal sourceType作为类型)重写为布尔值
如果sourceType是GetType(字符串),则
返回真值
如果结束
返回MyBase.CanConvertFrom(上下文,源类型)
端函数
公共重载将函数ConvertFrom(ByVal上下文作为ITypeDescriptorContext,ByVal区域性作为CultureInfo,ByVal值作为Object)重写为Object
如果值的类型为字符串,则
Dim v As String()=CStr(value).Split(新字符(){”,“c})
返回v
如果结束
返回MyBase.ConvertFrom(上下文、区域性、值)
端函数
末级