AJAX HTMLEditorExtender в таблицах обратной передачи не отображается - PullRequest
0 голосов
/ 17 ноября 2011

В настоящее время я использую инструмент Ajax; HTMLEditorExtender для превращения текстового поля в редактор WYSIWYG в проекте C # ASP.NET. На начальной загрузке страницы я помещаю большое количество форматированного текста и таблиц в редактор, что выглядит нормально; даже таблицы.

Данные загружаются в панель asp: и элементы / отображение на панели - это то, что фактически загружается в расширитель и отображается.

Однако, если я хочу иметь кнопку, которая сохраняет все данные, находящиеся в редакторе, в сеанс, а после нажатия кнопки все равно отображается все в редакторе WYSIWG на странице, отправьте обратно все, что загружается в текстовое поле, хорошо кроме таблиц. Они придумали теги. Есть ли что-нибудь вокруг этого?

Код, который я использую для начальной загрузки страницы, таков:

ContentPlaceHolder cphMain = (ContentPlaceHolder)this.Master.FindControl("MainContent");
Panel pnlContent = (Panel)cphMain.FindControl("innerFrame");
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(sw);
pnlContent.RenderControl(hw);
txtPN.Text = sb.ToString();
pnlContent.Visible = false;

При нажатии кнопки я сохраняю это:

string strHTMLText = txtPN.Text;
Session["ProgressNoteHTML"] = strHTMLText;

И я загружаю его на постбэк так:

txtPN.Text = (string)Session["ProgressNoteHTML"];
ContentPlaceHolder cphMain = (ContentPlaceHolder)this.Master.FindControl("MainContent");
Panel pnlContent = (Panel)cphMain.FindControl("innerFrame");
pnlContent.Visible = false;

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

Ответы [ 2 ]

2 голосов
/ 26 октября 2012

Решение, предлагаемое Эриком, не будет работать для табличных тегов, содержащих значения свойств.Например: <table align="right"> не будет декодировано.Я также обнаружил, что теги <img> также кодируются HTMLEditorExtender.

Более простым решением является использование метода Server.HTMLDecode().

TextBox_Editor.Text = Server.HtmlDecode(TextBox_Editor.Text) 'fixes encoding bug in ajax:HTMLEditor
0 голосов
/ 03 апреля 2012

У меня та же проблема, похоже, что-то связано с очисткой по умолчанию, которую расширение выполняет для содержимого HTML.Я не нашел способа его отключить, но обходной путь довольно прост.Напишите анти-дезинфицирующую функцию, которая заменяет очищенные теги соответствующими тегами.Ниже мое написано в VB.Net.Версия AC # будет выглядеть очень похоже:

 Protected Function FixTableTags(ByVal input As String) As String
    'find all the matching cleansed tags and replace them with correct tags.
    Dim output As String = input

    'replace Cleansed table tags.
    output = output.Replace("&lt;table&gt;", "<table>")
    output = output.Replace("&lt;/table&gt;", "</table>")
    output = output.Replace("&lt;tbody&gt;", "<tbody>")
    output = output.Replace("&lt;/tbody&gt;", "</tbody>")
    output = output.Replace("&lt;tr&gt;", "<tr>")
    output = output.Replace("&lt;td&gt;", "<td>")
    output = output.Replace("&lt;/td&gt;", "</td>")
    output = output.Replace("&lt;/tr&gt;", "</tr>")

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