0

我正在使用 MVC4 并且我有一个问题,而不是声明 ViewBag.MenuLevel="twostage"; 在我的控制器的每个 ActionResult 中,我可以以某种方式为每个控制器声明一次吗?例如,现在我可以说每个控制器有 40 个 ActionResult,这似乎很愚蠢,必须多次声明一个变量 - 所以我确信我错过了一些简单的东西。

我需要能够以某种方式在我的视图中使用它来影响演示。想法?楷模?对 MVC 来说有点新,所以要温柔!;)

基本上我希望每个部分(控制器)在前端显示不同的背景颜色,所以我想将部分/控制器打印到 html 中的 id 以便我可以通过 css 进行控制。

干杯。

4

3 回答 3

3

每次都必须设置 ViewBag 数据,这是架构中不可避免的特性。但是,您可以通过将属性应用于控制器的控制器代码使其更简洁。

public class ViewBagAttribute : ActionFilterAttribute
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var controller = filterContext.Controller;

        controller.ViewBag.MenuLevel = "twostage";
    }

    public void OnActionExecuted(ActionExecutedContext filterContext) { }
}

如果将该属性应用于控制器,则不必为每个 Action 方法显式添加 ViewBag 代码,因为每个 Action 方法OnActionExecuting都会自动调用。

于 2012-08-30T12:30:48.073 回答
0

您可以创建一个BaseController在其中定义共享字段和值的类。您所有的特定控制器都继承自基类。

于 2012-08-30T12:19:56.187 回答
0

创建您自己的控制器类并从中继承您的所有控制器。填写ViewBag您需要传递给此控制器类中所有视图的变量。

于 2012-08-30T12:20:24.197 回答