Как создать BaseController с ViewBag

Мне нужно сделать следующее: у меня есть некоторые контроллеры, готовые и запущенные, но теперь я хочу создать BaseController. Каждый из моих Controllers должен наследовать от него следующим образом:

public class MySecondController : BaseController

который уже работает до сих пор. Теперь проблема:

Я хочу добавить ViewBag в этот базовый контроллер. Этот ViewBag должен быть доступен из каждого вида, которое вызывается в моих контроллерах.

Как это реализовать?

Ответ 1

Вы можете переопределить метод OnActionExecuting в переопределенном методе, который вы можете использовать в словаре ViewBag.

public abstract class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        ViewBag.someThing = "someThing"; //Add whatever
        base.OnActionExecuting(filterContext);
    }
}

Ответ 2

Вы также можете просто заполнить ViewBag при создании базового контроллера

Public MustInherit Class BaseController : Inherits Controller

    Public Sub New()
        ViewBag.ErrorMessage= "someThing"; //Add whatever
    End Sub

End Class

Затем этот конструктор будет вызван для всех унаследованных классов:

Public Class OrderController : Inherits BaseController 

    Function Index() As ActionResult
        Return View()
    End Function

End Class

И доступный из вашего вида бритвы:

@ViewBag.ErrorMessage