我可以在asp.net mvc4中为布局创建控制器吗?

我可以在asp.net mvc4中为布局创建控制器吗?,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,Asp.net Mvc 4,我有一个菜单,我使用了一个cookie,以便通过刷新将菜单设置为选中。该菜单对所有类都是通用的,因此我将其放在了_layout.cshtml中,但同时我希望该布局有一个控制器,因为有一些函数可以将菜单设置为高亮显示。我可以为此创建一个控制器吗?部分操作可能就是您在这里寻找的-。它与MVC2相关,但原理保持不变。是的,您可以调用@Html.Action或@Hmtl.RenderAction从视图中调用控制器。但这接近于混合关注点,因为现在您的视图正在主动调用控制器 更好的方法通常是将适当的数据作为

我有一个菜单,我使用了一个cookie,以便通过刷新将菜单设置为选中。该菜单对所有类都是通用的,因此我将其放在了_layout.cshtml中,但同时我希望该布局有一个控制器,因为有一些函数可以将菜单设置为高亮显示。我可以为此创建一个控制器吗?

部分操作可能就是您在这里寻找的-。它与MVC2相关,但原理保持不变。

是的,您可以调用
@Html.Action
@Hmtl.RenderAction
从视图中调用控制器。但这接近于混合关注点,因为现在您的视图正在主动调用控制器

更好的方法通常是将适当的数据作为视图模型的一部分传递给视图

但同时我想为这个布局设计一个控制器,因为 一些功能将菜单设置为高亮显示


如果您正在做一些基本的事情,比如突出显示当前页面,那么可能有一个更简单的解决方案。您可以将当前页面ID放入
ViewBag
中,然后在主布局文件中检索该值,并使用它选择适当的项目。

为菜单创建一个操作,将菜单ui放入视图,然后在布局页面上调用Html.action(“菜单操作名称”,“控制器名称”)。

这里我们不使用ViewBag。好的,那么,我提供的另一个选项应该会起作用。我不经常使用ViewBag,但它适用于像这样的小数据块。我需要的是设置cookie,我必须将其设置为选中状态,但当我将此url放入新选项卡时,它会使用旧cookie。然后可能使用使用控制器渲染视图的
RenderAction
方法,还有你需要的任何与cookie相关的逻辑。还有其他参考文章吗?我是mvc新手