【问题标题】:Casual layout patern in mvc with razor带有剃刀的 mvc 中的休闲布局模式
【发布时间】:2016-06-21 13:58:52
【问题描述】:

我无法通过互联网找到 MVC-Razor 布局背后的卷轴意图。

在共享文件夹中,有:

_Layout.cshtml
_LoginPartial.cshtml

我应该将_Layout 用于不需要登录的页面,而将_LoginPartial 用于需要登录的页面吗?还是我完全迷路了?

为了简单:

如果我创建一个只能在登录时访问的新视图,它应该以

Layout = "~/Views/Shared/_Layout.cshtml";

Layout = "~/Views/Shared/_LoginPartial.cshtml";

?

编辑:

查看大家的教程和解释(谢谢大家)

_Layout.cshtml完全像 WEB FORM 中的母版页

所以我应该总是使用:

 Layout = "~/Views/Shared/_Layout.cshtml";

在我想像其他人一样格式化的页面的开头。

登录部分可以在身份验证后应用以更改布局(断开按钮而不是连接等)

【问题讨论】:

  • _Layout.cshtml 是一个布局文件(可以被多个视图使用)。 _LoginPartial.cshtml 是部分视图。那是两件不同的事情
  • ^ 这个。花点时间学习asp.net/mvc 上的教程。
  • 谢谢@ChrisPratt,如果我理解得很好,布局就像一个母版页,而部分视图更像是控件?
  • 不完全。一个视图就是一个视图。唯一真正区分布局、视图和局部的是它们的使用方式。我不想只是拉皮条我的博客,但我认为这篇文章有更清晰的解释:cpratt.co/how-to-change-the-default-asp-net-mvc-themet/…

标签: asp.net-mvc razor


【解决方案1】:

_Layout.cshtml 文件代表应用程序中每个页面的布局。虽然局部视图是一个自定义的、可重用的组件,您可以在需要它的每个页面中使用它。例如,我们可以为客户创建一个局部视图,并在页面中多次调用它

<table class="table table-condensed">
    @foreach (var student in Model.Students)
    {
        @Html.Partial("_StudentForm ", student)
    }
</table>

所以_Layout 用于所有页面,_LoginPartial.cshtml 可以在需要登录表单的页面内使用。查看这篇关于部分视图的文章 Tips and Tricks about Razor Partial Views

【讨论】:

    【解决方案2】:
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    

    在您的视图开始文件 (_ViewStart.cshtml) 中,可能是该文件中唯一的内容。

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    

    _Layout.cshtml 和 _Viewstart.cshtml 组合类似于 Web 应用程序中的母版页,但它们没有与之关联的控制器操作。如果您在 _ViewStart 文件中设置布局设置,则无需在实际视图中设置它,它们将从 viewstart 文件继承它。 如果您查看布局文件内部,您会在某处看到这一行

    @RenderBody()
    

    当调用您的特定视图时,您的个人视图 HTML 将在此处结束。

    Login 部分只是一个快速入门,用于演示可以根据用户是否登录来更改显示的视图。

    【讨论】:

      【解决方案3】:

      您可以使用相同的 _Layout.cshtml,但您的控制器 ActionMethod 应更改为 Authenticate。使用以下链接了解更多信息。

      Authenticate User in MVC

      【讨论】:

        【解决方案4】:

        它更像是布局的命名约定。 视图将从 viewstart 文件继承它。如果您查看布局文件内部,您将看到 renderbody 方法。

        @RenderBody() 
        

        这是在浏览器中读取和显示 HTML 代码的地方。

        _loginPartial.cshtml 也是如此,它只是为了外观并向您展示 Mvc 的能力。

        Visual Studio 创建布局 _Layout.cshtml 使用空项目模板。默认情况下,此布局通过 /Views/_ViewStart.cshtml 文件应用于所有视图。

        如果您不希望将默认布局应用于视图,您可以更改 _ViewStart.cshtml 中的设置(或完全删除文件)以在视图中指定另一个布局,如下所示:

        @{ Layout = "~/Views/Shared/MyLayout.cshtml"; }

        或者您可以禁用给定视图的任何布局,如下所示:

        @{ Layout = null; }

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-22
          • 1970-01-01
          • 1970-01-01
          • 2020-08-11
          • 2019-07-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多