4

私は長い間、.NET ネイティブ アイテムのコレクション プロパティ (ListBox や ListItems など) のように機能するユーザー コントロールのパブリック プロパティを作成する方法を考えていました。

<asp:ListBox blablabla>
    <asp:ListItem></asp:ListItem> <- Inline item collection...
</asp:ListBox>

私はウェブをチェックしていますが、成功していません。プロパティに追加する必要があるのは任意のタイプの属性、またはユーザー コントロールによって継承される必要があるインターフェイスである必要があると思いますが、それについての手がかりはなく、長い間考えてきました。

カスタム ユーザー コントロールで作業する必要がありますが、Visual Studio はそれを有効なアイテム コレクションとして認識しませんでした。

この userControl があるとしましょう:

public partial class userControls_Blablabla : System.Web.UI.UserControl
{
  public List<configItem> ConfigItem {get; set; }

  blablabla...rest logic here...
}

public class configItem {
   public string Name {get; set;}
   public string Url {get; set;}
   public string Color {get; set;}

  blablabla...rest logic here...
}

Visual Studio の .ASPX エディターでそのようなことを実行して、Intellisense に認識させるにはどうすればよいですか?

<User_Control:userControls_Blablabla ID="blablabla" ...blablabla....>
   <ConfigItem Name="1" Url="...." Color="..." />
   <ConfigItem Name="2" Url="...." Color="..." />
   <ConfigItem Name="3" Url="...." Color="..." />
</User_Control:userControls_Blablabla>

私の英語で申し訳ありません、私はそれがあまり良くないことを知っています.

前もって感謝します!

4

3 に答える 3

4

タイプのリストをコントロール クラスに配置し、PersistenceModeAttribute で装飾できます。

[PersistenceMode(PersistenceMode.InnerProperty)]
public List<configItem> ConfigItem { get; set; }

より良い例:

http://am-blog.no-ip.org/BlogEngine/post/2010/04/13/ASP-NET-Custom-Control-with-PersistenceModeInnerProperty-using-Server-Controls.aspx

于 2011-12-22T10:02:58.527 に答える
1

デザイナーが設計時に詳細を把握できるように、コントロールとそのプロパティを十分な情報で装飾する必要があります。このリンクをチェックしましたか?

于 2011-12-22T10:09:32.460 に答える
0

アドオンとして-上記のリンクは本当に役に立ちました。私が追加したい唯一のことは、別のアセンブリを使用せずにインテリセンスがそれを取得できるように、Web サイトに直接登録する方法です。

説明されているようにクラスを作成します。代わりに、レンダリングが OnInit メソッドをオーバーライドする場合は、以前に呼び出され、他のプロップでさらに再生できるためです。2 つの名前空間を作成します。

namespace x.Controls.Conference - add the class that derives from UserControl
{ 
    public partial class SlideShow : System.Web.UI.UserControl{...}
}

namespace x.Controls.Conference.SlideShowUC - add here the base class of the collection item in the UC (Collection<Slide>)
{
 public class Slide{...}
 public class SlideCollectionEditor : CollectionEditor{...}
}

コントロールを使用する頻度に応じて、aspx ページまたは Web 構成に直接登録できるようになりました。

ウェブ設定

<add tagPrefix="ucSlideShow" tagName="SlideShow" src="~/x/Controls/Conference/SlideShow.ascx" />
<add tagPrefix="ucSlideShow" namespace="x.Controls.Conference.SlideShowUC" assembly="WebAssembly" />

ページ

<%@ Register TagPrefix="ucSlideShow" TagName="SlideShow" src="~/x/Controls/Conference/SlideShow.ascx"  %>
<%@ Register TagPrefix="ucSlideShow" namespace="x.Controls.Conference" assembly="WebAssembly"  %>
于 2012-10-30T09:05:52.253 に答える