現在、C# で作成している Web パーツをサポートするために、SharePoint 環境で AJAX 機能をセットアップしている最中です。起動して実行するための出発点として Microsoft のウォークスルーを使用していますが、奇妙なエラーであると思われるエラーが発生しています。問題は CreateChildControls() で発生しています:
protected override void CreateChildControls()
{
base.CreateChildControls();
//Fix for the UpdatePanel postback behaviour.
EnsurePanelFix();
LinkButton sayHello = new LinkButton();
UpdatePanel refreshName = new UpdatePanel();
ScriptManager scriptHandler = new ScriptManager();
displayName = new Label();
inputName = new TextBox();
//Set up control properties.
this.displayName.ID = "displayName";
this.displayName.Text = "Hello!";
this.inputName.ID = "inputName";
sayHello.ID = "sayHello";
sayHello.Text = "Say Hello";
scriptHandler.ID = "scriptHandler";
refreshName.ID = "refreshName";
refreshName.UpdateMode = UpdatePanelUpdateMode.Conditional;
refreshName.ChildrenAsTriggers = true;
//Add the EventHandler to the Button.
sayHello.Click += new EventHandler(ClickHandler);
//Add the user interface (UI) controls to the UpdatePanel.
refreshName.ContentTemplateContainer.Controls.Add(this.inputName);
refreshName.ContentTemplateContainer.Controls.Add(sayHello);
refreshName.ContentTemplateContainer.Controls.Add(this.displayName);
//The ScriptManager control must be added first.
this.Controls.Add(scriptHandler);
this.Controls.Add(refreshName);
}
私が抱えている問題は、何らかの理由で CreateChildControls() を 2 回呼び出す必要があることです。コードをステップ実行すると、問題のあるすべての行が実行され、最初の行に戻って繰り返されます。ScriptManager を追加する最後から 2 番目の行に到達すると、同じキーで 2 番目の ScriptManager をページに追加しようとしているため、もちろん例外がスローされます。おそらく、このメソッドがどのように機能するかについての私の理解に誤りがありますが、なぜそれが2回呼び出されるのか理解できません(例外がスローされなかった場合、私が知っている限りでは、無限に再帰的に)。誰でも私に与えることができる助けをありがとう。