Response.Write как поведение, когда код выполняется в панели обновления - PullRequest
0 голосов
/ 19 августа 2009

Есть ли способ заставить Response.Write работать в UpdatePanel и не вызывать ошибку приложения по понятным причинам? Или есть ли способ получить аналогичные результаты без более чем одной строки кода в C #?

Ответы [ 5 ]

2 голосов
/ 19 августа 2009

Вы можете просто поместить буквенный элемент управления в панель обновлений и получить тот же эффект, используя:

myLiteral.Text += "Some more text!";
1 голос
/ 06 июня 2011

Только что обнаружил, что это может быть полезно для других людей.

вы не можете использовать Response.Write или Response.Redirect внутри панели обновления.

Чтобы решить эту проблему, вы должны использовать триггер. Это используется для отключения сервера из панели обновлений

<asp:UpdatePanel ID="UpdatePanel9" runat="server">
<Triggers>
    <asp:PostBackTrigger ControlID="btnExcel" />
</Triggers>
<ContentTemplate>

  ---Your code here

</ContentTemplate>

Здесь ControlID - это кнопка или другой элемент управления. Например, в событии нажатия кнопки вы можете написать текст в ответе.

0 голосов
/ 05 мая 2013

Простым решением этой проблемы, которую я использую, является вызов функции JQuery html (), вызов instept.Write () ... Например, допустим, я хочу обновить HTML-текст внутри UpdatePanel. Я бы сделал что-то вроде этого:

С Response.Write () это было бы просто так: Response.Write ( "[TextToBeAddedToHTML]");

Но с Jquery это немного сложно, и вы должны включить библиотеку Jquery на HTML-страницу:

ScriptManager.RegisterStartupScript(this, GetType(), "TextUpdate", "$(\"#[ID_OF_HTML_Element]\").html(\"<p>" + [TextToBeAddedToHTML] + "</p>\");", true);
0 голосов
/ 19 августа 2009

Response.Write не работает с UpdatePanels, но, как упоминал Спенсер, вы можете поместить свою информацию в литерал.

Другой вариант - использовать функцию System.Diagnostics.Debug.Assert(), если вы отлаживаете. Преимущества для этого

  1. вы можете поместить их в свой код, и они будут скомпилированы из релиза,
  2. Вы можете разместить их в местах, где ошибки НЕ ДОЛЖНЫ встречаться, но всплывет, чтобы сообщить вам, когда они появляются (только при отладке), и
  3. ваш код приостановит работу в строке Assert, так что вы точно знаете, что происходит, где вы помещаете этот Assert.

Как и во всем, не переусердствуйте и размещайте их повсюду, но я считаю, что это очень полезный инструмент отладки.

0 голосов
/ 19 августа 2009

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

Зачем вам эта функциональность в любом случае?

...