的字符串表示'(集合)'中無法創建類型爲'System.Collections.Generic.List'的對象我已經在asp.net中創建了自定義Web服務器控件。我想在RenderContents方法中渲染一個類的List。從''屬性
這裏是我的代碼:
所有的[DefaultProperty("Items")]
[ToolboxData("<{0}:News runat=server></{0}:News>")]
public class News : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public List<NewsItem> Items
{
get
{
List<NewsItem> items = (List<NewsItem>)(ViewState["Items"] == null ? new List<NewsItem>(): ViewState["Items"]);
return items;
}
set
{
ViewState["Items"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
foreach (var item in Items)
item.RenderControl(output);
}
}
首先,當我拖動此控件拖放到頁面上,我可以在設計時的屬性窗口中訪問項目屬性。
下面是它的ASPX代碼:
<Aram:News ID="News1" runat="server" />
後,我修改的項目(與價值說它是一家集出現),我沒有看到在設計視圖的任何更新。
後,我點擊確定,並開始調試,我得到的錯誤:
Cannot create an object of type 'System.Collections.Generic.List`1[[AramWebControls.NewsItem, Custom Web Server Control, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' from its string representation '(Collection)' for the 'Items' property.
現在我回頭看我的控制的ASPX代碼,它有它的商品屬性設置爲「(集)」。
<Aram:News ID="News1" runat="server" Items="(Collection)" />
如何解決這個問題?我擔心我的控件應該有List控件作爲內容。
任何幫助將不勝感激。
謝謝。
這是什麼意思'Items =「(Collection)」'? 「集合」字符串顯式設置或這裏是一些數據綁定到一個屬性? – sll
@sll我不會觸及aspx代碼。我只是從屬性窗口更新設計時屬性,並添加了一些項目。當我完成時,它只是以這種方式顯示它。當您從屬性窗口中單擊「Items」屬性時,您看不到添加的項目。它再次是空的。你有沒有設計過一個自定義的網頁控制? –