休闲布局模式在mvc与剃刀

时间:2016-06-21 13:58:53

标签: asp.net-mvc razor

我无法通过互联网找到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";

在页面的开头,我希望像其他人一样形成。

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

4 个答案:

答案 0 :(得分:1)

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

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

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

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

@RenderBody()

这就是在调用特定视图时,您的个人观看HTML将会结束的地方。

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

答案 1 :(得分:1)

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

Authenticate User in MVC

答案 2 :(得分:1)

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

@RenderBody() 

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

同样适用于_loginPartial.cshtml它的外观,并向您展示Mvc的功能。

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

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

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

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

@{ Layout = null; }

希望这会有所帮助。

答案 3 :(得分: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