Domyślna wartość dla ViewBag.Title w asp.net core

Odpowiedz Nowy wątek
2018-12-24 04:22
0

Cześć,
uczę się asp.net core. Stworzyłem sobie klasę MyController, która dziedziczy po Controller i której celem jest m.in. przypisanie w konstruktorze domyślnej wartości do zmiennej ViewBag.Title. Następnie każdy controller dziedziczy po MyController.

Problem jest taki, że w projekcie utworzonym w zwykłym mvc (nie core) takie domyślne przypisanie w konstruktorze działa tj. tytuł prawidłowo się wyświetla, chyba że go później zmienię.
Natomiast w projekcie asp.net Core takie przypisanie już nie działa. Chciałem się więc zapytać co jest tego powodem? Jak przypiszę wartość ViewBag.Title w akcji Index to działa, ale to przypisanie z konstruktora już nie...
Poniżej kod:

    public class MyController : Controller
        {
        public MyController()
            {
            @ViewBag.Title = "Moje imie i nazwisko";
            //w planach jakieś inne rzeczy
            }
        }

    public class HomeController : MyController
        {
        public IActionResult Index()
            {
            return View();
            }
        }

Loyout:

<title>@ViewBag.Title</title>
edytowany 1x, ostatnio: Kofcio, 2018-12-24 04:23

Pozostało 580 znaków

2018-12-24 11:15

By design: https://github.com/aspnet/Mvc/issues/1422#issuecomment-59997202

This behavior is intentional do not do work in your controller's constructor that touches anything stateful or related to the current request. If you want to run some code before any action is invoked, override the OnActionExecuting method defined on Controller.

BTW, ViewData jest AFAIK nieco szybsze niż ViewBag, możesz jego używać.

edytowany 1x, ostatnio: Ktos, 2018-12-24 11:18

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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