我无法通过互联网找到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";
在页面的开头,我希望像其他人一样形成。
登录部分可以在验证后应用以改变布局(断开按钮而不是连接等)。
答案 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。使用以下链接获取更多信息。
答案 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