我有一个控制器有几个动作,都返回一组相同的数据。与其将每个操作中的数据添加到ViewBag中,是否存在某种模式或属性,或者我可以调用或设置为将相同的数据添加到viewdata或viewbag中以执行每个操作,或者执行get每个视图中的相同数据,而无需在每个操作中调用该方法?有没有办法在特定控制器中为每个ASP.Net MVC操作返回相同的数据?
8
A
回答
14
你在找什么是ActionFilter
,然后覆盖OnActionExecuting
。这里是追加当前登录的用户的ViewBag我ActionFilters之一:
public class AppendUserActionFilterAttribute : ActionFilterAttribute
{
...
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
User currentUser = _sessionManager.CurrentUser;
dynamic viewBag = filterContext.Controller.ViewBag;
viewBag.CurrentUser = currentUser;
}
...
}
然后你需要应用的属性,无论你想这种情况的发生。如果将它附加到一个动作中,该动作将在ViewBag中获得添加的条目。如果你将它附加到控制器上,它的所有动作都会得到它。如果你把它添加到一个基本的控制器,并有所有的控制器继承它,然后在整个应用程序自己的行为得到它
[AppendUserActionFilter]
public class MyController : Controller {
public ActionResult Foo() {
....
}
}
3
一个可行的解决方案,可以通过构造函数分配控制器的
public class HomeController : Controller
{
public HomeController()
{
ViewData["Common"] = "Some Data";
}
}
它将可用于HomeController中的所有操作
+0
这不起作用 – 2016-01-07 15:06:43
相关问题
- 1. ASP.Net MVC:在不同控制器中的相同操作名称
- 2. 从MVC控制器返回数据返回相同的视图
- 3. 限制为特定视图的ASP.NET MVC控制器操作
- 4. 在asp.net中调用相同的控制器操作mvc
- 5. GET和POST到ASP.NET MVC中的相同控制器操作
- 6. 在pylongs中,有没有办法循环所有的控制器和操作?
- 7. 在asp.net MVC 3 applciation返回从同一个控制器动作
- 8. 有没有办法在ASP.NET MVC3站点中迭代所有控制器/动作?
- 9. 控制器没有返回json数据到视图在asp.net MVC Ajax
- 10. 没有控制器或操作名称的Asp.net mvc路由
- 11. 有没有办法在控制器/操作中禁用视图帮助器?
- 12. 将视图中的特定表数据返回给控制器? asp.net MVC
- 13. 保护返回JSON的ASP.NET MVC控制器操作
- 14. 有没有办法在一个getter中返回三个容器?
- 15. 有没有办法在控制器中获取PartialView HTML内容?
- 16. ASP.NET Web API操作 - 每个控制器只有一个GET?
- 17. asp.net mvc 3从控制器操作返回消息ajax
- 18. Asp.Net MVC控制器操作返回动画GIF问题
- 19. 根据参数从任何ASP.NET MVC控制器操作返回JSON
- 20. 有没有办法在rails 3.1中修复单个控制器?
- 21. 自定义路由ASP.NET MVC在每个控制器中设置默认操作
- 22. 有没有办法强制ASP.NET Web API返回纯文本?
- 23. 有没有办法使用asp.net mvc Razor ViewEngine制作@section选项?
- 24. 有没有办法在控制器方法之前检查控制器参数?
- 25. 表单操作没有打到MVC控制器方法
- 26. 有没有办法将不同的过滤器应用于控制器的操作,而不是父控制器在Rails 3中的操作?
- 27. ASP.NET MVC中有没有办法处理不同的Response.StatusCode值?
- 28. 有没有办法从Python返回一个数据框到R?
- 29. 是否有可能返回特定控制器操作的输出(html)?
- 30. 有没有办法强制添加到相同控件的扩展器的特定顺序?
ActionFilterAttribute存在于两个名称空间中:System.Web.Mvc和System.Web.Http.Filters。有什么区别吗?哪一个应该使用?我认为这将有助于避免混淆新手(像我一样)。 – 2014-05-07 09:47:19