Подтвердить что ты не робот

Как установить значения в ViewBag в ActionFilterAttribute ASP MVC 5?

Здравствуйте, я хотел бы создать свой собственный ActionFilterAttribute для каждого контроллера в моем приложении, этот атрибут должен установить некоторые значения ViewBag. Является ли ActionFilterAttribute подходящим для него и как получить доступ к viewbag в ActionFilterAttribute?

4b9b3361

Ответ 1

Вы можете сделать это следующим образом:

public class SomeMsgAttribute : FilterAttribute, IResultFilter
{
        public void OnResultExecuted(ResultExecutedContext filterContext)
        {
        }

        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            filterContext.Controller.ViewBag.Msg= "Hello";
        }
}

Использование:

[SomeMsg]
public ActionResult Index()
{
    return View();
}

Ответ 2

попробуйте это

public class CustomFilterAttribute : ActionFilterAttribute
{
    public override void
    OnActionExecuting(ActionExecutingContext filterContext)
    {
        //  get the view bag

        var viewBag = filterContext.Controller.ViewBag;

        // set the viewbag values
        viewBag.CustomValue = "CustomValue";
    }
}

Ответ 3

Для передачи данных из другого действия контроллера

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    EmployeeTrackingSystemAndMISEntities db = new EmployeeTrackingSystemAndMISEntities();

    var UserCookie = filterContext.HttpContext.Request.Cookies["UserUniqueID"];


    RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
    redirectTargetDictionary.Add("action", "UserLogIn");
    redirectTargetDictionary.Add("controller", "Login");

    var TempData = filterContext.Controller.TempData;
    TempData["Status"] = "Please log in as Admin";

    filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);

}