首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Razor _layout.cshtml在文件名中有一个前导下划线?

为什么Razor _layout.cshtml在文件名中有一个前导下划线?
EN

Stack Overflow用户
提问于 2011-01-02 08:40:47
回答 6查看 31.8K关注 0票数 151

在缺省的ASP.NET MVC 3项目中,布局和部分cshtml文件以下划线开头

为什么要使用这种约定,这是用来做什么的?我需要遵循这个约定吗?

该框架是否为

以下划线开头的文件?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-01-02 17:12:22

Razor是为MVC页面(WebMatrix)开发的,它没有你在ASP.NET中获得的关于视图、文件夹和路由的内置保护。由于网页中的布局页面不打算直接提供服务,因此它们带有下划线前缀。Web Pages框架已配置为不允许直接请求名称中带有前导下划线的文件。网页中的其他.cshtml文件通常需要是可浏览的。它们等同于.asp或.php文件。

ASP.NET团队已经声明,网页是ASP.NET开发中的起点,这应该会导致及时迁移到MVC (对于那些想要继续发展的人来说)。这在一定程度上意味着,从Web页面迁移到MVC应该尽可能容易。因此,将网页中建立的命名约定延续到MVC Razor文件中是有意义的。

所以这里

使用下划线作为文件名前缀的技术原因--这与MVC无关。

更新2018年10月

在新的ASP.NET核心剃刀页面框架中(在2.1版中除外),在启动时生成路径时,带有前导下划线的文件将被忽略-即使它们具有

指令(这通常会使它们成为一个可路由的Razor页面)。这就是为什么在Razor Pages应用程序中用前导下划线命名布局和部分文件是有意义的,如果它们不打算被浏览的话。

票数 217
EN

Stack Overflow用户

发布于 2011-01-02 10:12:09

Ruby on Rails就是这样做的(Partials以一个

_

但是呈现部分调用不包括

_

),并且ASP.net MVC从它中获得了很大的灵感。

实际上没有技术上的原因,只是一个约定,清楚地向其他开发人员(以及6个月后的您自己)展示了这样的意图:这是一个部分视图。

票数 12
EN

Stack Overflow用户

发布于 2011-01-02 08:47:39

无法通过浏览器的直接请求显示的页面(母版页、分部视图等)具有下划线(

_

)在他们名字的开头。

因此,如果您尝试向

_

Layout.cshtml (这是母版页)你会从服务器得到一个错误。

这是一种在Razor视图引擎中区分不能作为独立页面浏览的文件的方法。

这样想吧..。在MVC 2中...你可以用sufix .master、.ascx和normal页面来区分部分视图和主站点,另一方面,在Razor视图中,你可以区分部分视图和主站点。所有视图都是.cshtml的,因此为了区分分部页和母版页,它们将有一个前缀(

_

)。这不是强制性的,只是一个“约定”。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4576548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档