Проблема с ScriptManager при попытке отправить по электронной почте отображаемое содержимое страницы ASP.NET - PullRequest
1 голос
/ 24 марта 2010

Недавно я добавил элемент управления Telerik в ascx, который включен в страницу aspx. На этой странице есть кнопка «Отправить электронную почту», которая при нажатии отправит пользователю электронное письмо с обработанным выводом страницы. Элемент управления Telerik, который я добавил, требует ScriptManager, поэтому я добавил его в ascx. Однако теперь кнопка электронной почты не будет работать. Я получаю следующую ошибку:

Элемент управления с идентификатором «myIdHere» требует ScriptManager на странице. ScriptManager должен появиться перед любыми элементами управления, которым он нужен.

Я знаю, что диспетчер сценариев существует, потому что страница работает нормально, когда я перехожу по этому URL-адресу, и происходит сбой только при попытке отправить по электронной почте обработанный вывод.

Вот фрагмент кода, любые идеи относительно того, есть ли проблема со скриптовым менеджером при выполнении такого рода вещей?

Page EmailPage = new EmailBasePage();
System.Web.UI.HtmlControls.HtmlForm EmailForm = new System.Web.UI.HtmlControls.HtmlForm();
EmailPage.Controls.Add(EmailForm);
EmailForm.Controls.Add(contentTable); //this is the container with all the controls I want to email

StringBuilder SB = new StringBuilder();
StringWriter html = new StringWriter(SB);
HtmlTextWriter mhtmlWriter = new HtmlTextWriter(html);

EmailPage.DesignerInitialize();
EmailPage.RenderControl(mhtmlWriter);
mhtmlWriter.Close();

Обновление Элемент управления «myIdHere», указанный в сообщении об ошибке, является элементом управления Telerik RadComboBox, для которого требуется ScriptManager. Это дочерний элемент управления contentTable, который добавляется в EmailForm. Иерархия управления выглядит следующим образом:

contentTable  
|__UserControl1  
    |__ScriptManager1  
    |__UserControl2  
        |__Control "myIdHere", a Telerik RadComboBox requiring a ScriptManager

1 Ответ

2 голосов
/ 30 марта 2010

Если вы уверены, что выходные данные страницы содержат сценарии ASP.NET AJAX (отображаемые элементом управления ScriptManager), вы можете удалить исключение сервера, установив

myIdHere.RegisterWithScriptManager = false;

Это удалит зависимость выпадающего списка от элемента управления диспетчера сценариев на сервере. Обратите внимание, что элементу управления по-прежнему нужны клиентские сценарии ASP.NET AJAX в браузере, поэтому вам необходимо убедиться, что в первую очередь на странице есть ScriptManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...