обновление значений в web.config - PullRequest
3 голосов
/ 21 февраля 2010

Мне нужно сохранить экранированную строку html в ключе в web.config, используя Метод KeyValueConfigurationElement.Save, встроенный в фреймворк 3.5. Но когда я пытаюсь это сделать, он продолжает ускользать от моих амперсандов.

Код выглядит так:

strHTML = DecodeFTBInput(FTB1.Text)

FTB1.Text - это строка HTML, например: <b><font color="#000000">Testing</font></b>

DecodeFTPInput использует метод String.Replace (), чтобы изменить <и> на &lt; и &gt; и "на &quot;.

Учитывая приведенную выше строку и функцию, скажем, strHTML теперь содержит следующее:

&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;Testing&lt;/font&gt;&lt;/b&gt;

Конечно, я могу вручную отредактировать web.config, чтобы сохранить правильное значение, но мне нужен аутентифицированный пользователь-администратор, чтобы иметь возможность изменять html самостоятельно.

Проблема в том, что когда я пытаюсь сохранить эту строку в ключ в файле web.config, она экранирует все амперсанды как &amp;, который разрушает строку.

Как мне обойти это?

1 Ответ

1 голос
/ 21 февраля 2010

web.config - это файл XML, поэтому при записи значений в него .NET Framework сохраняет строки, используя HTML-кодировку , заменяя символы < > & на &lt;, &gt; и &amp; и многое другое.

Вам нужно запретить методу DecodeFTPInput HTML-кодировку строки, если вы хотите, чтобы HTML-файл в файле web.config был редактируемым. В противном случае вы будете дважды кодировать HTML, а это не тот результат, который вам нужен!

...