Odświeżanie częsciowego widoku.

0

Witam
Chciałem sobie dodać do mojej aplikacji odświeżanie wyników co sekundę, skorzystałem z jQuery i PartialView, ale nie działa to jak chce. Po pierwszym wejściu na stronę z tym widokiem, timer na początku dobrze odlicza czas a później strasznie przyspiesza i nie wiem dlaczego. Po przejściu do innej strony i wróceniu z powrotem od razu szybko zaczyna odliczać czas i nagle przestaje działać. Nie mam pojęcia czego to może być wina.

Używane metody akcji:

 
public ActionResult ListTasks(NNTaskList nnTaskList)
{
    return View(nnTaskList);
}
[HttpPost]
public ActionResult AjaxRefreshTasksList(NNTaskList nnTaskList)
{
    return PartialView("AjaxRefreshTasksList", nnTaskList);
}

Widok ListTasks:

@model Lynx.Domain.Concrete.NNTaskList

@{
    ViewBag.Title = "TasksInfo";
}

@{ Html.RenderPartial("AjaxRefreshTasksList", Model); }

Widok: AjaxRefreshTasksList

 
@model Lynx.Domain.Concrete.NNTaskList

<script type="text/javascript">
    setInterval(function () {
        $.post('@Url.Action("AjaxRefreshTasksList")', function (data) {
            $('#tasksList').html(data);
        });
    }, 1000);
</script>

<div id="tasksList">

    <table class="details">
        <thead>
            <tr>
                <th>ID</th>
                <th>Iteration</th>
                <th>Error</th>
                <th>IsReady</th>
                <th></th>
                <th></th>
            </tr>
        </thead>
        <tbody>
            @for (int i = 0; i < Model.FeedforwardTasks.Count; i++)
            {
                Html.RenderPartial("FeedforwardTaskDetails", Model.FeedforwardTasks[i]);
            }

            @for (int i = 0; i < Model.SOMTasks.Count; i++)
            {
                Html.RenderPartial("SOMTaskDetails", Model.SOMTasks[i]);
            }
        </tbody>
    </table>
</div>
0

Udało się, rozwiązanie było banalne, po prostu aktualnie za każdym razem kiedy był pobierany PartialView dodawany był nowy interwał. Rozwiązanie polegało na przeniesieniu owego dodania do głównego szablonu strony.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    <link href="~/Content/Site.css" type="text/css" rel="stylesheet" />
    <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            if ($('#tasksList').length > 0) {
                setInterval(function () {
                    $.post('@Url.Action("AjaxRefreshTasksList")', function (data) {
                         $('#tasksList').html(data);
                     });
                 }, 1500);
            }
        });   
    </script>
</head>
<body>
    <div id="PAGE">
        <header id="HEADER">
            <h1>Lynx</h1>
        </header>
        <nav id="NAV">
            <div class="oi">
                <ul>
                    <li>@Html.ActionLink("Search", "Search", "Collection")</li>
                    <li>@Html.ActionLink("Add Collection", "Add", "Collection")</li>
                    <li>@Html.ActionLink("Start Task", "SelectNetwork", "NeuralNetwork")</li>
                    <li>@Html.ActionLink("Tasks Info", "ListTasks", "NeuralNetwork")</li>
                </ul>
            </div>
        </nav>
        <article id="CONTENT">
            <div class="oi">
                @RenderBody()
            </div>
        </article>
        <footer id="FOOTER">
            &#169 @DateTime.Now.Year Tomasz Tarczyński
        </footer>
    </div>
</body>
</html>

1 użytkowników online, w tym zalogowanych: 0, gości: 1