Как сделать элемент управления для строки - PullRequest
1 голос
/ 29 июня 2011

Я видел это снова и снова, типичный ответ примерно такой:

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из того, что я могу сказать (возможно, вы не можете визуализировать элемент управления, совместимый с частичной обратной передачей таким образом).

Если кто-то умнее меня не сможет доказать, что это может быть сделано *

1 Ответ

0 голосов
/ 18 июля 2011

Создайте расширитель элемента управления ajax и получите html-разметку на стороне клиента, а затем отправьте его обратно на сервер для обработки, это немного взломано, но кажется, что все, что связано с элементами управления ajax, приведет к поломке рекомендуемого по умолчанию механизма.1001 *

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