В настоящее время я нахожусь в процессе настройки возможностей AJAX в среде SharePoint для поддержки веб-частей, которые я создаю с помощью C #. Я использую пошаговое руководство 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 () должен вызываться дважды. Когда я перехожу код, он выполняет каждую строку с проблемой, затем возвращается к первой строке и повторяется. Когда он доходит до последней строки, где он добавляет ScriptManager, он, конечно, выдает исключение, потому что он пытается добавить второй ScriptManager на страницу с идентичным ключом. Возможно, это ошибка в моем понимании того, как этот метод должен работать, но я не понимаю, почему он вызывается дважды (или бесконечно рекурсивно, насколько я знаю, если это исключение не было выброшено). Спасибо за любую помощь, кто может мне помочь.