2016-06-21 65 views
0

我无法通过互联网找到MVC-Razor布局背后的卷轴意图。mvc中用剃刀的休闲布局模板

在共享文件夹中,有:

_Layout.cshtml 
_LoginPartial.cshtml 

我应该使用_Layout为这么想的需要先登录页面,以及需要先登录页面使用_LoginPartial?或者我完全失去了?

为了使简单:

如果我创建登录时只能达到一个新的观点,应该把它与

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

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

可以开始?

编辑:

检查从每个人的教程和说明(感谢所有)

_Layout.cshtml酷似在Web表单母版页,

所以我应该始终使用:

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

at beg进入我想要像其他人一样格式化的页面。

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

+0

'_Layout.cshtml'是一个布局文件(可以被多个视图使用)。 '_LoginPartial.cshtml'是一个局部视图。这是2件不同的事情 –

+1

^这。花一些时间阅读http://asp.net/mvc上的教程。 –

+0

谢谢@ChrisPratt,如果我理解的很好,布局就像是一个母版页,而部分视图更像是控件? –

回答

1

文件_Layout.cshtml表示应用程序中每个页面的布局。虽然部分视图是一个自定义的可重用组件,您可以在每个页面中使用它,但您需要它。例如,我们可以在页面上为客户创造一个局部视图,并调用了很多时间

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

所以_Layout旨在用于所有页面和_LoginPartial.cshtml可以在页面内使用,你需要有一个登录表单in。检查这篇文章关于局部视图 Tips and Tricks about Razor Partial Views

1
Layout = "~/Views/Shared/_Layout.cshtml"; 
在收看开始文件(_ViewStart.cshtml)

,可倍,其唯一在那个文件中。

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

的_Layout.cshtml和_Viewstart.cshtml组合类似于Web应用程序的主网页,但这些不会有与它们相关的控制器动作。如果您在_ViewStart文件中设置布局设置,则无需将其设置在实际视图中,它们将从viewstart文件继承它。 如果你看看布局文件里面,你会看到这条线的地方

@RenderBody() 

这是你的个人意见HTML将结束时,您的特定视图被调用。

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

1

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

Authenticate User in MVC

1

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

@RenderBody() 

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

_loginPartial.cshtml它只是为了外观,并告诉你Mvc能够做什么。

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

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

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

也可以为一个给定的视图中禁用任何布局,像这样:

@{ Layout = null; }

希望这有助于。