Я видел это снова и снова, типичный ответ примерно такой:
public string RenderControlToHtml(Control ControlToRender)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter stWriter = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(stWriter);
ControlToRender.RenderControl(htmlWriter);
return sb.ToString();
}
... Это хорошо, если у вас есть простые HTML-теги, но когда у меня есть текстовое поле или какой-то другойЭлемент управления asp в моем элементе управления вызывает колебания в отношении того, что элемент управления не находится в форме (на самом деле это происходит потому, что я пытаюсь отобразить часть страницы в строку, которую я могу затем отправить по электронной почте)
Итак ...
Я почти уверен, что раньше об этом спрашивали и отвечали, но я затрудняюсь найти реальный ответ, который действительно работает ...
Как мневизуализировать вывод html серверных и клиентских элементов управления в строку html в .Net 4.0, потому что, по-видимому, вышеприведенное не достаточно хорошо?
Примечание:
Я нашел примеры, которые говорят о выполненииэто на уровне страницы ...
public override void VerifyRenderingInServerForm(Control control)
{
//Do nothing (we dont care if theres a form or not)
}
... и отключение проверки событий, но, очевидно, это не работает для меня.
Есть ли способ сделать это без "взлома"что чисто?
Также:
Я даже пытался создать новую страницу, добавить к ней форму, добавить к ней свой элемент управления и затем вызвать renderControl на той странице, на которой я получил больше ошибок.
РЕДАКТИРОВАТЬ: я копался иЯ думаю, что проблема может быть связана с постбэками или чем-то еще, потому что я нашел это: http://forums.asp.net/t/1325559.aspx
Еще одна вещь, которая может внести немного гаечного ключа в работу, это мое использование инструментария ajax, мне по сути нужнотолько видимая часть элемента управления, которая по какой-то причине вызывает некоторую головную боль для панелей обновления.
Я предполагаю, что приведенный выше пример работает только с базовыми элементами управления .net, которые не связаны с набором инструментов ajax.
Что еще больше усложняет проблему, так это то, что я хотел бы получить элемент управления в его текущем состоянии при нажатии кнопки в нижней части его ...
По сути, элемент управления представляет собой форму для бронирования.MOT и я хотел бы предоставить заполненную форму на электронную почту, которая затем отправляется в гараж, если это имеет смысл.
Я думаю, что мне, возможно, придется признать поражение здесь и просто получить разметку от клиента и вручную создать электронное письмо, извлекая значения элемента управления, так как это кажется проблемой совместимости между элементами управления ajax и методом renderControlиз того, что я могу сказать (возможно, вы не можете визуализировать элемент управления, совместимый с частичной обратной передачей таким образом).
Если кто-то умнее меня не сможет доказать, что это может быть сделано *