ASP.NET ответ после обработки - PullRequest
0 голосов
/ 23 марта 2012

Я столкнулся с довольно запутанной проблемой прямо сейчас.

Я использую ASP.NET в Visual Studio 2010. Теперь у меня есть огромная обработка плюс сетевая интеграция, когда пользователь нажимает кнопку. Смысл в том, что для ответа требуется много времени (около 1-1,5 минуты). До тех пор, я должен сказать пользователю, чтобы быть терпеливым и не обновлять страницу. Я пробовал это в качестве первой строки кнопок:

label.visible = true; // метка изначально установлена ​​как невидимая и содержит текст, в котором говорится, что пользователь должен быть терпеливым.

НЕ УДАЧИ !!!

Далее я тоже попробовал Response.Write ("alert ('Пожалуйста, будьте терпеливы.')");

НЕ УДАЧИ !!!

Это не значит, что эти заявления не выполняются. Они есть! Но на самом деле это делается после того, как время обработки истекло. то есть пользователю говорят, что он должен быть терпеливым после операции!

Я знаю, что существует некоторая концепция, называемая autopostback, но я не могу найти метод, который разрешает autopostback метки или инструкции. Кто-нибудь может спасти мой день ???

Ответы [ 3 ]

1 голос
/ 23 марта 2012

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

<asp:Button runat="server" id="btnInitiate" OnClientClick="document.lblPleaseWait.style.display='';return true;" Text="Initiate"/>
<asp:Label runat="server" id="lblPleaseWait" style="display:none;">Please Wait</asp:Label>

Я ничего не знаю о jquery, но меня убеждают, что это даст вам гораздо лучший доступ к объекту метки в DOM.

Возможно, вы также захотите отключить кнопку btnInitiate, чтобы остановить их повторное нажатие. Для этого вам нужно изучить свойство UseSubmitBehavior = "false"

(Кроме того, вы неправильно понимаете свойство «autopostback». Это означает, что элемент управления - при изменении / нажатии / и т. Д.) Автоматически отправит обратно форму на сервер. Это никак не связано с ответом back с сервера.)

1 голос
/ 23 марта 2012

Это все, что вам нужно сделать:

 <asp:Button ID="btnClick" OnClientClick="showMessage()" runat="server" Text="Click" onclick="btnClick_Click" />
 <span style="display:none;" id="lblMessage">Please be patient.</span> 

showMessage () - функция javascript, которая должна изменить стиль отображения lblMessage:

<script type="text/javascript">
    function showMessage() {
        document.getElementById('lblMessage').style.display = 'block';
    }
</script>

Или вместо span вы также можете использовать элемент управления меткой ASP.Net, но вы должны установить для его атрибута ClientIdMode значение Static:

<style type="text/css">
.InvisibleStyle
{
    display: none;    
}
</style>

<asp:Button ID="btnClick" OnClientClick="showMessage()" runat="server" Text="Click" onclick="btnClick_Click" />
<asp:Label ID="lblMessage" runat="server" Text="Please be patient." ClientIDMode="Static" CssClass="InvisibleStyle" ></asp:Label>
1 голос
/ 23 марта 2012

Если, как я полагаю, вы находитесь в парадигме обратной передачи, это означает, что вы запускаете процесс, и пользователь получает первый ответ только через 1 минуту. или так. Между ними вы не можете ничего отправить пользователю по одному и тому же запросу. Обходным путем может быть запуск события с использованием ajax, чтобы вы могли запустить событие асинхронно, показать сообщение вежливости пользователю и дождаться ответа.

...