有没有更好的方法可以做到这一点?在asp.net mvc中

时间:2009-09-15 17:35:04

标签: asp.net-mvc views

由于我的应用程序有侧边栏菜单,每次我想加载视图时都会通过xml动态构建,我需要传递所有这些参数。

        ViewData["mainItems"] = navigation.getItems();
        ViewData["controller"] = controller;//this is just a string with the name of my  controller

我怎样才能避免每次都这样做但是参数不断被检索和传递?

2 个答案:

答案 0 :(得分:1)

您实际上不需要传递控制器名称。你在viewContext中有它。

请参阅此问题:Find what ASP.NET MVC controller in master view

答案 1 :(得分:0)

如果我理解你的问题是正确的,那么你可能想要创建一个基类控制器并让你的所有控制器继承这个基本控制器。然后覆盖OnActionExecuted事件,该事件将在每个操作上被触发。

public class BaseController : Controller {
   protected override void OnActionExecuted(ActionExecutedContext filterContext) {
      ViewData["mainItems"] = navigation.getItems();
      ViewData["controller"] = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
      base.OnActionExecuted(filterContext);
}