【问题标题】:What should i do for master page logic in mvc我应该为 mvc 中的母版页逻辑做什么
【发布时间】:2013-07-26 09:47:06
【问题描述】:

我是 mvc 的新手。我有一个网络表单应用程序,每个页面都有一个母版页。

母版页模板中有一个虚拟函数,每个页面的 page_load 我都覆盖了它。

现在我的项目中有 mvc 模式。我应该把所有这些业务放在我的项目中的什么地方。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    在 MVC 中可以使用一些特殊的视图(假设您使用的是 razor)。

    _viewstart_layout 的视图(虽然可以命名为其他任何名称)。

    所以基本上特定控制器的视图文件夹中的 _layout.cshtml 视图可以作为存在于同一文件夹中的视图的母版页,而共享文件夹中的 _layout.cshtml 视图可以作为所有视图的母版页。

    要指定将特定视图用作母版页,请在视图内设置 Layout 变量。前Layout = "~/Views/Shared/_layout.cshtml";

    【讨论】:

    • 所以这是合乎逻辑的。除此之外,我应该为一些代码文件检查做什么?例如,在我要检查的每个页面中,用户名是 cerq
    • 理想情况下,您不应该检查视图内的用户名,在控制器中执行此操作。但如果你想这样做。你可以在 _viewstart 内完成
    • 当然我想检查控制器。但是在每一个动作中写作并不是我想要的方式,我也不知道那是真正的方式。所以我问了这个问题
    【解决方案2】:

    通常母版页位于 Views 文件夹的 Shared 文件夹中。

    如果您有多个母版页,我建议您尽量减少相同的数量。

    制作一个应该在所有页面上调用的父母版页。

    要使用多个母版页,您可以这样做

    <script language="C#" runat="server">
        protected void Page_PreInit(object sender, EventArgs e)
        {
            if (User.IsInRole("Admin"))
            {
                this.MasterPageFile = "~/Views/Shared/Site2.Master";
            }
            else
            {
                this.MasterPageFile = "~/Views/Shared/Site.Master";
            }
        }
    

    你也可以使用 ViewMasterPage.MasterPageFile 内置类

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      相关资源
      最近更新 更多