【问题标题】:Do not want to load layout page every time in MVC不想每次都在 MVC 中加载布局页面
【发布时间】:2014-07-16 03:59:26
【问题描述】:

在我的 mvc web 应用程序中,我想生成动态菜单。我只想在用户登录时第一次生成它,而不是每次用户转到另一个视图时生成它。我想将菜单生成的代码放在布局 cstml 中。但据我所知,布局每次都会刷新。有什么办法可以解决这个问题。请帮我。我是 mvc 的新手。提前感谢所有人。

【问题讨论】:

  • 不,你不能那样做。更好地将菜单项缓存在会话/缓存等临时存储中并构造它

标签: asp.net-mvc


【解决方案1】:

你需要把页面的内容放在ajax div中。然后,每次只更新 div。

【讨论】:

    【解决方案2】:

    插入即可

    @{
    Layout = null;
    }
    

    在您不想要布局的视图顶部

    【讨论】:

    • 如果我把 layout=null 那么我如何得到菜单?因为我想把菜单放在布局中。
    • 我想把菜单放在布局中。当我使用菜单项单击另一个页面时,布局将保持不变,但将加载相应的页面。
    • 所以你想要SPA然后你需要使用knockout或angularjs msdn.microsoft.com/en-us/magazine/dn463786.aspx
    • 在这个 mvc 中,您在不同的 div 中插入部分视图并隐藏该 div 并单击特定菜单显示该 div
    • 这个答案本身是有效的。如果您想排除基本布局并使用不同的 html 结构制作自己的页面。它适用于我的情况。
    【解决方案3】:

    您可以在不想加载 layout.cshtml 页面的每个视图中检查条件。

    MVC 3: How to render a view without its layout page when loaded via ajax?

    否则,您还可以设置另一个布局视图,其中菜单控件不存在,并检查是否第一次用户登录然后加载菜单布局,否则另一个布局。

    【讨论】:

    • 我想把菜单放在布局中。当我使用菜单项单击另一个页面时,布局将保持不变,但将加载相应的页面。
    • 使用另一个布局并在相应页面中应用该新布局,@{ Layout = "~/Views/Home/newLayout.cshtml"; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多