Как создать 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