19

我需要执行以下操作:我已经准备好并正在运行一些控制器,但现在我想创建一个BaseController. 我的每个人都Controllers应该像这样继承它:

public class MySecondController : BaseController

到目前为止,那已经在运行了。现在的问题:

我想在ViewBag这个基本控制器中添加一个。这ViewBag应该可以从我的控制器中调用的每个视图访问。

如何实现这一点?

4

1 回答 1

42

您可以在重写方法中重写OnActionExecuting方法,您可以将数据写入ViewBag字典。

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

.net Core 2019 更新:

using Microsoft.AspNetCore.Mvc.Filters;

public abstract class BaseController : Controller
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        ViewBag.someThing = "someThing"; //Add whatever
        ViewData["someThingElse"] = "this works too";
        TempData["anotherThing"] = "as does this";
        base.OnActionExecuting(filterContext);
    }
}
于 2013-04-16T11:03:13.917 回答