Asp.net mvc 4 从基本ActionFilterAttribute的ViewBag中提取数据

Asp.net mvc 4 从基本ActionFilterAttribute的ViewBag中提取数据,asp.net-mvc-4,viewbag,Asp.net Mvc 4,Viewbag,在上面的代码中,我通过viewbag传递来自控制器操作的数据。我可以在上面提到的变量val中看到这些数据。如何在上面的代码中从变量动态val中提取数据 当我使用断点浏览时,这就是流 val{System.Web.Mvc.DynamicViewDataDictionary} ViewData{System.Web.Mvc.ViewDataDictionary} _innerDictionary计数=1 [0]=>我需要的数据在这里,如果我像这样传递数据,我需要的数据在这里 var numbe

在上面的代码中,我通过viewbag传递来自控制器操作的数据。我可以在上面提到的变量val中看到这些数据。如何在上面的代码中从变量动态val中提取数据

当我使用断点浏览时,这就是流

  • val{System.Web.Mvc.DynamicViewDataDictionary}
    • ViewData{System.Web.Mvc.ViewDataDictionary}
    • _innerDictionary计数=1

      • [0]=>我需要的数据在这里,如果我像这样传递数据,我需要的数据在这里

        var number=新列表{1,2,3}

        ViewBag.numbers=编号

        然后我可以像这样从CustomfilterAttribute获取数据

        foreach(filterContext.Controller.ViewBag.numbers中的变量编号)

        {
        var i=number;
        }

        注意:为此,您需要仅为传递ViewBag.Number数据的方法分配[GeneralFilter],否则您将面临空引用错误!
        我很感激你能给我更好的答案

        为了避免空引用错误,只需设置这样的if条件“if(if(filterContext.Controller.ViewBag.numbers!=null)”就可以了!还有更好的吗?
        public class GeneralFilter : ActionFilterAttribute
        {
            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                dynamic val = filterContext.Controller.ViewBag;
                string action = filterContext.ActionDescriptor.ActionName;
                string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            }
        }