Пользовательский элемент управления ASP.NET, могу ли я взять данные из <template>и преобразовать их в строку? - PullRequest
1 голос
/ 02 марта 2011

Я пытаюсь создать пользовательский элемент управления asp.net с таким полем, как:

<ErrorTemplate>
<h1>Error</h1>
<p>Blue wizard shot the food</p>
</ErrorTemplate>

То, что я хочу закончить, это:

<h1>Error</h1><p>Blue wizard shot the food</p> в строке в моем коде.

На данный момент процесс, который я использую для извлечения этих данных из шаблона:

Сначала это создается в качестве заполнителя моим кодом:

ErrorTemplate.InstantiateIn(errorPHolder);

, который является элементом управления заполнителем asp.net - его нужно создать во что-то, что может поддерживать элементы управления.

Затем я хочу добавить это на мою страницу, используя JQuery и переменную, например:

string script = "var Errortemplate = " + errorPHolder.ToString() + ";";
scriptmanager.register(script); // pseudocode

результат будет на моей странице:

var Errortemplate = '<h1>Error</h1><p>Blue wizard shot the food</p>';

Тогда я могу использовать JQuery, чтобы сделать someDiv.html(Errortemplate);

В итоге все, что они вставили в <ErrorTemplate>, появилось на странице

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

Есть идеи?

1 Ответ

2 голосов
/ 02 марта 2011

Вы пытались сделать свой контроль?

StringBuilder sb = new StringBuilder();
using (StringWriter tw = new StringWriter(sb))
{
    using (HtmlTextWriter hw = new HtmlTextWriter(tw))
    {
        errorPHolder.RenderControl(hw);
    }
}

// its HTML string representation of errorPHolder
string html = sb.ToString();
...