Используя ответ Атанаса Корчева в течение нескольких дней, я обнаружил, что у меня появляются ошибки JavaScript, подобные:
«Не удалось проанализировать полученное с сервера сообщение»
При использовании в сочетании с ASP.NET Ajax UpdatePanel
control . Причина описана в этом сообщении в блоге .
В основном UpdatePanel
, кажется, критично относится к тому, чтобы точная длина отображаемой строки была постоянной. То есть если вы измените строку и сохраните длину, это будет успешно, если вы измените текст так, чтобы длина строки изменилась, возникает ошибка JavaScript выше.
Моим не идеальным, но работающим решением было предположить, что UpdatePanel
всегда делает POST и отфильтровывает это:
protected override void Render(HtmlTextWriter writer)
{
if (IsPostBack || IsCallback)
{
base.Render(writer);
}
else
{
using (var output = new StringWriter())
{
base.Render(new HtmlTextWriter(output));
var outputAsString = output.ToString();
outputAsString = doSomeManipulation(outputAsString);
writer.Write(outputAsString);
}
}
}
Это работает в моем сценарии, но имеет некоторые недостатки, которые могут не работать в вашем сценарии:
- При обратной передаче строки не изменяются.
- Строка, которую видит пользователь, является неуправляемой
-
UpdatePanel
может срабатывать и для НЕ-обратных передач.
Тем не менее, я надеюсь, что это поможет другим, кто обнаружит подобную проблему. Кроме того, см. Эту статью, в которой более подробно обсуждаются UpdatePanel
и Page.Render
.