为什么Razor _layout.cshtml在文件名中有一个前导下划线?
在默认的ASP.NET MVC 3项目中,layout&partial cshtml文件以下划线开头
_viewstart
-
_Layout
-
_LogOnPartial
这个约定是什么意思,用来做什么? 我需要遵循这个约定吗?
框架是否给一个以下划线开头的.cshtml
文件提供了一些特殊的含义?
Razor是为ASP.NET Web Pages(WebMatrix)开发的,它没有内build在MVC中的视图文件夹和路由的相同types的保护。 由于网页中的布局页面不是直接提供的,所以它们的前缀是下划线。 而且网页框架已经被configuration为不允许直接请求名称中带有前导下划线的文件。 网页中的其他.cshtml文件通常需要可浏览。 它们相当于.asp或.php文件。
ASP.NET团队已经指出,Web页面是ASP.NET开发中的一个起点,这将导致及时(为那些想要移动的)迁移到MVC。 其中的一部分意味着从网页迁移到MVC应该尽可能简单。 因此,将Web页面中build立的命名约定inheritance到MVC Razor文件是有意义的。
所以有一个技术原因,在文件名前加一个下划线 – 这与MVC无关。
Ruby on Rails就是这样做的(Partial以_开始,但Render Partial调用不包含_),而ASP.net MVC从中吸取了很多灵感。
没有技术上的原因,只是一个约定,向其他开发人员(6个月以后)清楚地表明意图:这是一个局部的观点。
无法通过浏览器的直接请求(主页面,部分视图等)显示的页面在其名称的开始处具有下划线(_)。
因此,如果您尝试向_Layout.cshtml(这是母版页)发出请求,则会从服务器收到错误消息。
它是在Razor视图引擎中区分不能作为独立页面浏览的文件的一种方式。
想想这样…在MVC 2中…你可以用sufix来区分局部视图和mastersite .master,.ascx和normal页面是.aspx,另一方面在Razor视图中。所有的意见都是.cshtml,所以要区分部分和masterpages他们将有一个前缀(_)。 它不是强制性的,只是一个“惯例”。
据我所知,这只是一个用来识别文件意图的惯例; 我不相信它实际上会改变文件的行为。 在大多数的开发环境中,预先加下划线标识的东西是为了“私人”使用,无论是由类,或在这种情况下,另一个模板。
我不使用MVC,但对于也使用剃刀语法的网页,_前缀通常表明页面并不意味着被用户访问,而是被其他页面或一些代码访问。 如果您尝试导航到包含_prefix的页面,则asp.net将阻止对其进行访问。 这就是为什么它使用布局页面和其他这样的页面,因为他们不应该直接由用户访问。
就像在asp.net中的App_Code文件夹
- ASP.NET – 从JQuery传递JSON到ASHX
- entity framework:“存储更新,插入或删除语句影响了意外数量的行(0)”。
- ASP.NET MVC剃刀渲染没有编码
- 如何在Asp.net的图像控件中显示数据库中的图像?
- Foreach循环,确定哪个是循环的最后一个迭代
- 为什么要在内置的ASP.NET Core DI容器上使用第三方DI容器?
- 如何使用Dapper Dot Net从数据库结果映射到Dictionary对象?
- 无法打开login请求的数据库“testing”。 login失败。 用户'xyz \ ASPNET'login失败
- ASP.NET网站或ASP.NET Web应用程序?