#9.4 Dodajemy dynamiczną treść do widoku.

Dodawania do naszego widoku statycznej i dynamicznej treści.

Teraz chcielibyśmy dodać do naszego widoku jakąś treść. I o ile ze statyczną treścią nie ma większego problemu to dynamiczną musimy jakoś wygenerować i przesłać do widoku. Generowanie dynamicznej treści wykonuje się w kontrolerze, ale jeszcze później musimy w jakiś sposób przekazać ją do widoku?

Żeby zobaczyć jakikolwiek efekt zmodyfikujemy troszeczkę nasz nowo utworzony widok, ale także nasz kontroler Home. Wstawimy na naszą stronę główną (widok: Index) jakąś treść. Dodamy treść „Witaj! Znajdujesz się na stronie głównej.” i w następnym wierszu dodamy aktualną datę i godzinę.

Tekst statyczny, który będzie się pokazywał na stronie Index możemy wpisać bezpośrednio w pliku widoku Index. Natomiast dynamiczną część, czyli aktualna datę i godzinę, musimy wygenerować w kontrolerze i później przekazać ją do widoku. I tym się zajmiemy w pierwszej kolejności. Nasz kontroler Home należy zmodyfikować zgodnie z listingiem 9.4.1, pogrubioną czcionką zaznaczona zmodyfikowana treść kontrolera.

Listing 9.4.1 Modyfikacja kontrolera Home.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace PierwszaAplikacja.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ViewResult Index()
        {
            ViewBag.DataGodzina = DateTime.Now;
            return View();
        }
    }
}

Do przechowania i przekazania daty i godziny z kontrolera do widoku użyjemy dynamicznego obiektu ViewBag, do którego możemy stworzyć właściwość DataGodzina (nazwa naszej właściwości jest dowolna) i do tej właściwości przypiszemy wartość aktualnej daty i godziny dzięki poleceniu DateTime.Now. Stworzenie właściwości DataGodzina dla obiektu ViewBag i przypisanie do niej wartości aktualnej daty i godziny wygląda następująco.

 

	ViewBag.DataGodzina = DateTime.Now;

Za pomocą obiektu ViewBag aktualną datę i godzinę możemy przekazać do naszego widoku Index. W tym celu modyfikujemy nasz widok Index. Pogrubioną czcionką zaznaczona jest zmodyfikowana część kodu.

Listing 9.4.2 Modyfikacja widoku Index.

 @{
    Layout = null;
}
<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
    <title>Strona główna</title>
</head>
<body>
    <div> 
            Witam ! <br>
            Aktualna data i godzina: @ViewBag.DataGodzina
    </div>
</body>
</html>

Jak widać kawałek kodu @ViewBag.DataGodzina służy do wywołania właściwości DataGodzina obiektu ViewBag. W tym właśnie miejscu w przeglądarce internetowej pojawi się aktualna data i godzina. Żeby zobaczyć efekt naszych działań uruchamiamy nasz projekt (F5), co prezentuje rysunek 9.4.1.

9.4.1 Widok projektu w przeglądarce internetowej po modyfikacjach kontrolera i widoku._
9.4.1 Widok projektu w przeglądarce internetowej po modyfikacjach kontrolera i widoku._