MVC 5 Auto erfrischende Teilansicht

Habe ich eine partial view angezeigt wird, und die Fußzeile der Seite in der _Layout. Der controller berechnet einen Wert jede Sekunde - die Zahl der Opfer von computer-Kriminalität.

Controller-Code:

namespace EUWebRole.Controllers
{
public partial class PartialFooterStatisticsController : Controller
    {

    [OutputCache(NoStore = true, Location = OutputCacheLocation.Client, Duration = 1)]
    public ActionResult Index()
        {
        //14 victims per second.
        //what second is it
        int hrs = DateTime.Now.Hour;
        int min = DateTime.Now.Minute;
        int sec = DateTime.Now.Second;

        int totalSeconds = sec + (min * 60) + (hrs * 3600);
        int totalVictims = totalSeconds * 14;
        ViewData["TotalVictims"] = totalVictims.ToString("N0");

        return PartialView("_PartialFooterStatistics");
        }
    }
}

Dem Partial view sieht wie folgt aus - keine Formatierung oder etwas - ich möchte nur den Wert für heute 😛

@ViewData["TotalVictims"]

Schließlich, der _Layout-Bereich für dieses ist hier:

  @Html.Partial("_PartialFooterStatistics")

Wie bekomme ich den Wert für die Anzeige in _Layout und update jede Sekunde, ohne die gesamte Seite aktualisiert wird - ich vermute, dass ist das, was die Teilansicht verhindern aber nicht sicher.

Sorry für so eine einfache Frage, aber wir alle irgendwo anfangen.

Dank

UPDATE 1

Ok, ich bin ein wenig weiter vorne jetzt.
Die GetVictimCount wird nur einmal aufgerufen.
MVC 5 Auto erfrischende Teilansicht

Hier ist mein Aktuelles Controller-code:

 public partial class PartialFooterStatisticsController : Controller
{


    public ActionResult Index()
    {
        return PartialView("_PartialFooterStatistics");

    }

    public JsonResult GetVictimCount()
    {

        int hrs = DateTime.Now.Hour;
        int min = DateTime.Now.Minute;
        int sec = DateTime.Now.Second;

        int totalSeconds = sec + (min * 60) + (hrs * 3600);
        int totalVictims = totalSeconds * 14;

        //logic here for getting your count
        var victimCount = totalVictims;

        return Json(victimCount, JsonRequestBehavior.AllowGet);
    }

}

Meine Teilweise Anzeigen-code:

<script src="~/Scripts/jquery-1.10.2.js"></script>
<div id="victimCountId">
    Result
</div>


<script type="text/javascript">

var timeoutId;
$(document).ready(function () {
    timeoutId = window.setTimeout(UpdateCount, 1000);
});

function UpdateCount() {
    $.getJSON("PartialFooterStatistics/GetVictimCount", function (dataResponse) {
        var div = $('#victimCountId').html(dataResponse);

        printResult(div, item);

    });
}

function printResult(div, item) {
    div.append("Result " + item.Line1);
}
</script>

und meiner _Layout Code

     <footer>
        <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
        @Html.Partial("_PartialFooterStatistics")
    </footer>
</div>



@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)


</body>
</html>

<script type="text/javascript">

$(function () {

    setInterval(function () { $('#_PartialFooterStatistics').load('GetVictimStatistics'); }, 1000); //every 3 sec

});

</script>

function printResult(div, item) {
    div.append("Result " + item.Line1);
}
</script>

Wie gesagt die Partielle Sicht nicht genannt wird, jede Sekunde, und die Leistung ist auch nicht das richtige... ich erwarte als "Ergebnis" und einer Zahl, die formatiert ist wie die 100.000, die es in den controller, sondern stattdessen alles, was ich bekommen ist 100000.

Müssen Sie die Verwendung von JavaScript-oder ajax-Lösung. Es wird kein update über server side code, ohne zusätzliche server-Anfrage
Gar nicht zu zeigen, den Inhalt der ViewBag.
Ich bin verwirrt mit deinem setup, Im ziemlich. Neue Firma MVC als gut, aber ich glaube nicht, dass die Schaffung controller für die partielle Ansichten sinnvoll. Welche URL verwendest du zum testen Ihrer Seite... Können Sie überprüfen, ob deine action-Methode wird immer aufgerufen wird?
Home index verwendet wird, als die partielle view ist eine berechnete Fußzeile.

InformationsquelleAutor Dave Gordon | 2014-05-31

Schreibe einen Kommentar