私はasp.netでカスタムWebサーバーコントロールを作成しました。私は、RenderContentsメソッドでクラスのListをレンダリングしようとしています。ここで'System.Collections.Generic.List'のオブジェクトを、 ''プロパティの文字列表現 '(Collection)'から作成できません。
は私のコードです:すべての
[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);
}
}
まず、私はページ上にこのコントロールをドラッグ&ドロップするとき、私はデザイン時にプロパティウィンドウからItemsプロパティにアクセスすることができます。
は、ここでのASPXコードです:
<Aram:News ID="News1" runat="server" />
私は(それがコレクションであると言って値が表示されている)のアイテムを変更した後、私は、デザインビュー上の任意の更新情報が表示されません。
そして、私は[OK]をクリックし、デバッグを開始した後、私はエラーを取得:私は私のコントロールのASPXコードを振り返ることを今
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.
は、それが(コレクション」に設定され、そのItemsプロパティを持っています) '。
<Aram:News ID="News1" runat="server" Items="(Collection)" />
これを解決するには?私は自分のコントロールがコンテンツとしてListコントロールを持っているはずです。
ご協力いただければ幸いです。
ありがとうございました。
これは、 'Items ="(Collection) "という意味ですか?明示的に "Collection"文字列が設定されている場合、またはここにプロパティへのデータバインディングがありますか? – sll
@sll私はaspxコードに触れません。プロパティウィンドウからデザインタイムプロパティを更新するだけで、いくつかのアイテムを追加できます。私が終わったら、それだけでそれを示しています。また、プロパティウィンドウから 'Items'プロパティをクリックすると、追加されたアイテムは表示されません。それはもう一度空です。前にカスタムWebコントロールを設計したことがありますか? –