あなたの後ろのようなサウンドは、コンポジットコントロールです。それらは、プログラムですべてを作成するコントロールを作成するためにascxファイルを使用するのではなく、ユーザーコントロールだけに似ています。ユーザーコントロールを使用してこれを行う大きな利点は、アセンブリに入れてさまざまなプロジェクトで使用できるもので終わることです。
複合コントロールは、コントロールまたはWebControlから継承できます。私は個人的には通常Controlを継承するほうが有益です。なぜなら、通常は単一のCssClassプロパティを使ってスタイルを作成するだけなので、WebControlから得られる余分なものはほとんど必要ないからです。
また、クラスがINamingContainerインターフェイスを実装していることを確認する必要があります。これは、コントロールが同じ親コンテナで複数回使用されている場合、各子コントロールが自動的に一意の名前を取得するようにします。
コンポジットコントロールを作成するときに最も重要なことは、コントロールのCreateChildControlsメソッドをオーバーライドすることです。実際にコントロールを作成するためのすべてのロジックがここに入ります。フレームワークは、ページライフサイクルの適切なタイミングで自動的に呼び出されることを自動的に確認します。私は、ASP.NET AJAXはこのくらい複雑にすべきとは思わない
public class MyCompositeControl : Control, INamingContainer
{
protected override void CreateChildControls()
{
Controls.Clear();
var textbox = new TextBox();
textbox.ID = "TextBox1";
Controls.Add(textbox);
if (!Page.IsPostBack || !IsTrackingViewState)
{
// make sure you set the properties after
// you add it to the parent or the viewstate
// won't save properly
textbox.MaxLength = 30;
}
var button = new Button();
button.ID = "Button1";
Controls.Add(button);
if (!Page.IsPostBack || !IsTrackingViewState)
{
button.Text = "Save";
}
}
}
:
はここで少し例です。私が考えることができるのは、コンポジットコントロールが追加されるページにScriptManagerを作成する必要があることだけです。
MSDNサイトにfull exampleがあります。 this blogにもう1つ良い例があります。
これは私をもう少し近づけましたが、カスタムJavaScriptですが、既存のAJAXコントロールではありません:http://msdn.microsoft.com/en-us/library/bb386450.aspx –