2010-10-20 29 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

相關問題