blumonde - Ответов: 1

Как я могу заставить этот индикатор выполнения работать в моем случае?


Ниже приведена ссылка на то, как построить индикатор выполнения, который я пытался заставить работать на моем сайте MVC:


https://www.codeproject.com/Articles/1124691/SignalR-Progress-Bar-Simple-Example-Sending-Live-D


Проблема заключается в том, как я называю "StartProcess()" при нажатии кнопки "Отправить" является связана с действием "searchAllQuotes" в "контроллере"?

-------------------------------------------------------------------------------
Вот как мне нужно активировать progressbar с помощью onclick на странице просмотра:
@using (Html.BeginForm("searchAllQuotes", "Home", FormMethod.Get))
{
<input type="submit" class="btn btn-primary" value="Slideshow of quotes" onclick="StartProcess()"/>
}

Ниже приведен ваш javascript на той же странице просмотра:
// ВЫЗОВ МЕТОДА В КОНТРОЛЛЕРЕ ДЛЯ ВЫПОЛНЕНИЯ НЕКОТОРОЙ РАБОТЫ
функция StartProcess() {

$.getJSON("/Home/LongRunningProcess?connectionId=" + connectionId,bindresults),
        {},
        function (data) {
            if (!data) {
                alert("Success");
            }
            else
            {
                alert(data);
            }
        });
    }



--------------------------------------------------------------------
Ниже приведена моя домашняя страница контроллера:
public ActionResult searchAllQuotes()
{
    return View("~/Views/Quotes/searchQuotes.cshtml", db.Quotes.OrderByDescending(quotes => quotes.DateAdded).ToList());
}

public JsonResult LongRunningProcess(string connectionId)
{
    //THIS COULD BE SOME LIST OF DATA
    int itemsCount = db.Quotes.OrderByDescending(quotes => quotes.DateAdded).ToList().Count;

    for (int i = 0; i <= itemsCount; i++)
    {
        //SIMULATING SOME TASK
        Thread.Sleep(500);

        //CALLING A FUNCTION THAT CALCULATES PERCENTAGE AND SENDS THE DATA TO THE CLIENT
        Functions.SendProgress("Process in progress...", i, itemsCount, connectionId);
    }

    return Json("", JsonRequestBehavior.AllowGet);
}


Пожалуйста, посоветуйте. Заранее спасибо.

Что я уже пробовал:

Выполнил и jQuery, и действие контроллера одновременно, но это не сработало.

1 Ответов

Рейтинг:
1

Ehsan Sajjad

Это не будет работать так, как вы пытаетесь, как только вы нажмете кнопку Отправить, форма получит сообщение, и страница будет обновлена, вам нужно реализовать другую стратегию, и прямо сейчас не ясно, почему вы отправляете форму и вызываете другой вызов ajax одновременно?