Arb*_*æde 28 asp.net-mvc asp.net-mvc-5
您好我想为我的应用程序中的每个控制器创建自定义ActionFilterAttribute,此属性应设置一些ViewBag值.ActionFilterAttribute是否适合它以及如何在ActionFilterAttribute中访问viewbag?
Ily*_*lya 66
你可以这样做
public class SomeMsgAttribute : FilterAttribute, IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
}
public void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.Controller.ViewBag.Msg= "Hello";
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
[SomeMsg]
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*ash 12
试试这个
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";
}
}
Run Code Online (Sandbox Code Playgroud)
对于 ASP.NET Core,您可以执行以下操作
public class SomeFilterAttribute : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
Controller controller = context.Controller as Controller;
controller.ViewBag.CustomValue = customVal;
controller.ViewData["CustomValue "] = customVal;
controller.TempData["CustomValue "] = customVal;
}
}
Run Code Online (Sandbox Code Playgroud)
然后从控制器
[TypeFilter(typeof(ValidateAppFeatureEnabled))]
public IActionResult Index()
{
var foo = ViewBag.CustomValue;
var bar = (type)ViewData["CustomValue"];
var buzz = (type)TempData["CustomValue"];
// Whatever else you need to do
return View();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20703 次 |
| 最近记录: |