在缺省的ASP.NET MVC 3项目中,布局和部分cshtml文件以下划线开头
为什么要使用这种约定,这是用来做什么的?我需要遵循这个约定吗?
该框架是否为
以下划线开头的文件?
发布于 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应用程序中用前导下划线命名布局和部分文件是有意义的,如果它们不打算被浏览的话。
发布于 2011-01-02 10:12:09
Ruby on Rails就是这样做的(Partials以一个
_
但是呈现部分调用不包括
_
),并且ASP.net MVC从它中获得了很大的灵感。
实际上没有技术上的原因,只是一个约定,清楚地向其他开发人员(以及6个月后的您自己)展示了这样的意图:这是一个部分视图。
发布于 2011-01-02 08:47:39
无法通过浏览器的直接请求显示的页面(母版页、分部视图等)具有下划线(
_
)在他们名字的开头。
因此,如果您尝试向
_
Layout.cshtml (这是母版页)你会从服务器得到一个错误。
这是一种在Razor视图引擎中区分不能作为独立页面浏览的文件的方法。
这样想吧..。在MVC 2中...你可以用sufix .master、.ascx和normal页面来区分部分视图和主站点,另一方面,在Razor视图中,你可以区分部分视图和主站点。所有视图都是.cshtml的,因此为了区分分部页和母版页,它们将有一个前缀(
_
)。这不是强制性的,只是一个“约定”。
https://stackoverflow.com/questions/4576548
复制相似问题