我们正在开发一些使用MVCMVC4/5的ASP.NET应用程序。这家公司刚接触WebForms,但已经创建了一些web应用程序。我的问题是,与WebForms开发中使用的模板最接近的等价物是什么?我没有意识到任何接近的东西。代替模板概念,您如何控制/确保团队中的每个人都保持相同的布局?CSS可以用于颜色和排版,但是布局和非CSS又如何呢?
发布于 2014-08-06 04:36:23
我们使用Razor Layouts,Scott Gu有一个出色的系列here
发布于 2014-08-06 04:56:09
Razor使用“布局”。它们只是视图(.cshtml
/.vbhtml
文件),其中至少有一段代码,@RenderBody()
,这是使用布局呈现的视图内容将被放置的位置。其他一切都是可选的,尽管使用@RenderSection("SectionName", true/false)
实现"sections“是很常见的,其中true
值表示secction是必需的(必须在调用此布局的视图中定义),而false
值表示它是可选的。然后,您的视图使用以下内容实现该节:
@section SectionName
{
<!-- something here -->
}
默认情况下,视图将使用在Views\Shared\_Layout.cshtml
中定义的布局,但您可以通过在视图中显式指定布局来使它们使用其他布局:
@{
Layout = "~/Views/Shared/_MyAwesomeLayout.cshtml";
}
或者将包含该代码的_ViewStart.cshtml
放在要应用该代码的视图目录中。然后,该目录中的视图和其中的所有子目录都将使用该布局,除非它们有自己的显式布局,或者它们所在的子目录有自己的_ViewStart.cshtml
文件。
布局也可以继承自其他布局,但它们必须重新定义原始布局中的任何部分,才能将它们显示在视图中。例如:
Views\Shared\_Layout.cshtml
<html>
<body>
@RenderBody()
@RenderSection("Scripts", false)
</body>
</html>
Views\Shared\_FooLayout.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<p>Foo</p>
@RenderBody()
@section Scripts
{
@RenderSection("Scripts", false)
}
https://stackoverflow.com/questions/25147796
复制相似问题