Как отобразить метку во время обработки нажатия кнопки?

#c# #asp.net

#c# #asp.net

Вопрос:

Есть ли какой-либо способ отобразить метку, которая показывает «загрузка ..» во время обработки моего нажатия кнопки?

Я делаю это таким образом

 protected void btnUpload_Click(object sender, EventArgs e)
{
    lblOutput.Text="uploading..";

    HttpPostedFile postedFile = FileUpload1.PostedFile;
    string ClientFileName, ServerFileName;

    if ((FileUpload1.HasFile amp;amp; FileUpload1.PostedFile != null) || txtUrl.Text!="")
    {
        try
        {
            HttpPostedFile myFile = FileUpload1.PostedFile;

            if (fileType == "Image")
            {
                if (fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".png" || 
                    fileExt == ".bmp" || fileExt == ".tif")
                {
                    ServerFileName = System.IO.Path.Combine(ServerSavePathI, ClientFileName);
                    string serverPath = Server.MapPath(ServerFileName);
                    FileUpload1.SaveAs(serverPath);
                    dbInsert(fileType, fileName, fileExt, 
                             filePath fileType "/" fileName.Replace(" ",string.Empty) fileExt, 
                             url);
                }
            }
        }
    }
}
  

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

Я делаю что-то неправильно, или есть какой-либо другой способ сделать это?

Комментарии:

1. Ага……. Форматирование кода???

2. lblOutput.visible = false? просто предполагаю, что я не прочитал все это целиком, потому что это похоже на изложенное выше (трудно читать)

3. Нет, невозможно с вашей текущей логикой. Ваш лучший вариант — использовать AJAX вместо обратной передачи, тогда такая вещь становится довольно тривиальной.

4. нет, его свойство visible не равно false.

5. @Heena в отличие от классического ASP, в ASP.NET вывод отправляется в браузер только после того, как сервер закончит обработку всего, так что это сплошная стена.

Ответ №1:

 <script type="text/javascript">
        function showMessage() {
            document.getElementById("<%= lblOutput.ClientID %>").innerHTML = "uploading..";
        }
    </script>

<asp:FileUpload runat="server" ID="FileUpload1" />
    <asp:Button runat="server" ID="btnUpload" Text="Upload" OnClick="btnUpload_Click" OnClientClick="showMessage()" />
    <asp:Label runat="server" ID="lblOutput" />
  

Комментарии:

1. замените innerText на innerHTML

Ответ №2:

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