我有一个控制器,有几个动作都返回一组数据,这些数据都是相同的.不是在每个动作中将数据添加到ViewBag,而是我可以调用或设置一些模式或属性,以便为每个动作添加相同的数据到viewdata或viewbag,或者执行获取的其他更好的方法每个视图中相同的数据,而不是在每个动作中调用方法?
Mat*_*eer 13
你要找的是一个ActionFilter
,然后覆盖OnActionExecuting
.这是我的一个ActionFilters,它将当前登录的用户附加到ViewBag:
public class AppendUserActionFilterAttribute : ActionFilterAttribute
{
...
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
User currentUser = _sessionManager.CurrentUser;
dynamic viewBag = filterContext.Controller.ViewBag;
viewBag.CurrentUser = currentUser;
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要将属性应用于您希望发生的任何位置.如果将其附加到操作,该操作将在ViewBag中获取添加的条目.如果将其附加到控制器,它的所有操作都将获得它.如果将它附加到基本控制器并让所有控制器将其子类化,那么整个应用程序中的所有操作都会获得它
[AppendUserActionFilter]
public class MyController : Controller {
public ActionResult Foo() {
....
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1860 次 |
最近记录: |