Asp.net mvc 4 Viewbag不';不存在

Asp.net mvc 4 Viewbag不';不存在,asp.net-mvc-4,Asp.net Mvc 4,我试着这样做: var NewViewResult = new ViewResult { ViewName = "Error", ViewBag.error = "Error Here" }; 我犯了这两个错误 无效的初始值设定项成员声明符 当前上下文中不存在名称“ViewBag” 这是我的代码: public override void OnException(System.Web.Mvc.ExceptionContext filterContext) { if (filterC

我试着这样做:

var NewViewResult = new ViewResult { ViewName = "Error", ViewBag.error = "Error Here" };
我犯了这两个错误

  • 无效的初始值设定项成员声明符
  • 当前上下文中不存在名称“ViewBag”
这是我的代码:

public override void OnException(System.Web.Mvc.ExceptionContext filterContext)
{
    if (filterContext.ExceptionHandled) return;

    string actionName = filterContext.RouteData.Values["action"].ToString();
    Type controllerType = filterContext.Controller.GetType();
    var method = controllerType.GetMethod(actionName);
    var returnType = method.ReturnType;

    if (returnType.Equals(typeof(JsonResult))) if (filterContext.Exception is CustomException) filterContext.Result = new JsonResult() { Data = ((CustomException)filterContext.Exception).Type }; else filterContext.Result = new JsonResult() { Data = OurExceptionType.GeneralException };

    else if (returnType.Equals(typeof(ActionResult)) || (returnType).IsSubclassOf(typeof(ActionResult)))  filterContext.Result = new ViewResult { ViewName = "Error" ViewBag.error="SomeError" }; 


    filterContext.ExceptionHandled = true;
}

ViewBag是一个动态属性,您不能在ViewResult中这样传递它

在ViewBag中设置如下值:

var NewViewResult = new ViewResult { ViewName = "Error" }; 

ViewBag.error = "Error Message";
var NewViewResult = new ViewResult { ViewName = "Error" };
在视图中,您只需访问它,而无需传入
ViewResult

<span>@ViewBag.error</span>

但是,我如何传递它呢?您需要在具有ViewBag这样的ViewBag的键中设置一个值。error=“some text”并且它将在视图中不做任何操作就可用。我将一些文本设置为error并得到相同的错误,我尝试了var NewViewResult=NewViewResult{ViewName=“error”,error=“error Here”};如果此错误不包含ViewResult类中“error”的定义,则您不需要错误字段检查,只需在ViewResult中返回ViewName,并按照我在asnwer中显示的方式在ViewBag中设置错误文本,然后从ViewBag中访问它不在CustomExceptionAttribute In public override void OneException中(System.Web.Mvc.ExceptionContext筛选器上下文)