【问题标题】:Can I create a controller for layout in asp.net mvc4?我可以在 asp.net mvc4 中为布局创建控制器吗?
【发布时间】:2013-04-05 09:34:27
【问题描述】:

我有一个菜单,我使用了一个 cookie 来将菜单设置为通过刷新选择。菜单对所有类都是通用的,所以我把它放在 _layout.cshtml 中,但同时我想要这个布局的控制器,因为有一些功能可以将菜单设置为突出显示。我可以为此创建一个控制器吗?

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 asp.net-mvc-4


    【解决方案1】:

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

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

    但同时我想要这个布局的控制器,因为那里 一些将菜单设置为突出显示的功能。

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

    【讨论】:

    • 这里我们不使用viewbag。
    • 好的,那么我提供的其他选项之一应该可以工作。我不经常使用 ViewBag,但是对于像这样的小块数据来说它是很好的。
    • 我需要设置 cookie,我必须将其设置为选中,但是当我将此 url 放入新选项卡时,它会使用旧 cookie。
    • 那么也许可以使用RenderAction 方法,它使用控制器来呈现视图,并在其中包含您需要的任何与 cookie 相关的逻辑。
    • 还有其他文章可以参考吗?我是mvc新手
    【解决方案2】:

    部分操作可能是您在此处寻找的 - this article may be some help。它与 MVC2 相关,但原理保持不变。

    【讨论】:

      【解决方案3】:

      为menu创建一个action,将menu ui放到view中,然后在布局页面调用Html.Action("menu action name","controllern name")。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多