Веб-формы ASP.NET: асинхронный PostBack внутри UpdatePanel восстанавливает состояние страницы до того состояния, когда бC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Веб-формы ASP.NET: асинхронный PostBack внутри UpdatePanel восстанавливает состояние страницы до того состояния, когда б

Сообщение Anonymous »

У меня есть UpdatePanel с кнопкой, которую я использую для вызова обратной передачи через JavaScript. Это запустит функцию в коде, которая выполнит несколько вызовов API. Я хотел бы сделать эти вызовы асинхронными, чтобы повысить производительность. Вот пример того, что я пытаюсь сделать:

Код: Выделить всё













$(function () {
$("#").click();
})

Код: Выделить всё

protected void btnTest_Click(object sender, EventArgs e)
{
Page.RegisterAsyncTask(new PageAsyncTask(async () =>
{
await TestAsync();
}));
}

private async Task TestAsync()
{
var apiCall1 = FakeApiCall();
var apiCall2 = FakeApiCall();
var apiCall3 = FakeApiCall();

// Runs in parallel to improve performance. Should take ~5 seconds to complete instead of ~15 seconds
await Task.WhenAll(apiCall1, apiCall2, apiCall3);

var result1 = await apiCall1;
var result2 = await apiCall2;
var result3 = await apiCall3;

lblTest.Text = "Async Postback Finished!";
upUpdatePanel.Update();
}

private async Task FakeApiCall() {
Task.Delay(5000);
return true;
}
Однако после завершения этой частичной обратной передачи она восстанавливает состояние страницы до того состояния, когда частичная обратная передача была инициализирована. Поэтому, если я прокрутил страницу до конца, выделил текстовое поле или изменил вид вкладок и т. д., все это будет сброшено до момента начала обратной передачи.
Чего я ожидал было ли состояние страницы оставаться неизменным, а менялось бы только содержимое внутри UpdatePanel.
Как я могу решить эту проблему? Возможно ли это вообще, или мне следует использовать другой метод, например вызов веб-службы с использованием AJAX и заполнение пользовательского интерфейса Javascript? Но у этого есть обратная сторона: предоставление кода и веб-метода клиенту и увеличение размера js-файла, который клиент должен загрузить. Есть ли какие-либо недостатки в попытке сделать это в коде с помощью асинхронного PostBack?

Подробнее здесь: https://stackoverflow.com/questions/766 ... e-state-to
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»