2010-10-20 31 views
1

我有List<Something>类型的属性的用户控件:ASP.NET:自定义控件(或用户控件),属性为List <Something>。该属性可以在ASPX源代码中设置吗?

Private p_myList As New List(Of Guid) 
Public Property MyList() As List(Of Guid) 
    Get 
     Return p_myList 
    End Get 
    Set(ByVal value As List(Of Guid)) 
     If value Is Nothing Then Throw New ArgumentNullException() 
     p_myList = value 
    End Set 
End Property 

是否popssible在使用用户控件的页面的ASPX源设置此属性,例如,像:

<uc1:myUserControl runat="server" MyList="3c7d794e-7645-46e7-bdde-a0bc42679261, 3c7d794e-7645-46e7-bdde-a0bc42679262" /> 

还是我需要创建一个“兼容属性”类型的字符串,然后解析? (我知道我可以通过代码隐藏设置这些值,但我宁愿做在ASPX源。)

+0

http://stackoverflow.com/questions/859625/is-it-possible的可能的复制-to-initialize-a-controls-listt-property-in-markup? – jelbourn 2010-10-20 14:03:12

回答

3

你需要创建一个TypeConvertor

喜欢的东西

public class GuidListTypeConverter : System.ComponentModel.TypeConverter 
{ 
    public override bool CanConvertFrom(System.ComponentModel.ITypeDescriptorContext context, Type sourceType) 
    { 
     return sourceType == typeof(Guid); 
    } 
    public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) 
    { 
     string val = value as string; 

     string[] vals = val.Split(','); 
     System.Collections.Generic.List<Guid> ret = new System.Collections.Generic.List<Guid>(); 
     foreach (string s in vals) 
     { 
      ret.Add(Guid.Parse(s)); 
     } 
     return ret; 
    } 
} 

然后

[TypeConverter(typeof(GuidListTypeConverter))] 
public List<Guid> MyList {get;set;} 
0
QUICK & DIRTY TRICK : make the property public and use the code 
    ((MyPageClassName)this.Page).PropertyName 

通过这种方式,你可以提供访问控制,并从用户控件到父页和反之亦然。要使控件可用,请在其各自的页面designer.cs文件中公开它们。

****<<Update>>**** 

感谢您纠正我。 AFAICU,你想设置属性,如果用户控制在aspx页面。就像我们设置gridview的DataKeyNames一样,您可以在其中放置多个关键字段。所以他们是一个问题,你怎么知道你在列表中放置的GUID总是唯一的。或者这个GUID是固定的并且来自数据库。你会如何保持一致性?

我建议,对于Codebehind这种玩法,你可以有更多的aspx控制。

+0

感谢您的回答,但我看不出与我的问题有何关系。你有可能误解了它吗? (特别是我的问题的最后一句话......) – Heinzi 2011-03-31 16:17:07

相关问题