为什么我需要在asp.net mvc中使用下划线来表示部分视图

Eli*_*eth 21 asp.net-mvc partial-views

只是为了区分对话框中使用的视图或foreach循环中使用的视图(客户详细信息)?

Eri*_*sch 29

你不需要下划线.这只是一个约定,MVC非常热衷于使用约定.

  • @tsemer - 错了,看到我对Marius的评论,如果你打扰阅读它们,这已经解决了.只有在使用Web Pages框架时才需要下划线,它只是基于Web Pages编码标准的MVC中的约定,并且在MVC中没有任何有用的功能.另见KennyZ的回答,他认为我的回答是正确的......对于MVC. (9认同)
  • 抱歉没有阅读整个评论部分.我会尽可能删除downvote(21天,除非你编辑).无论如何,既然你的回答也让我感到困惑,我可以建议编辑它以澄清"在MVC中它就是这样而在WebPages中就是这样".然后我也会将其作为最佳答案:).授权的WebPages与确切的OP问题无关,但我仍然相信这对于访问此页面的人来说最有用. (5认同)
  • 我在之前的评论的最后一句话中预先回答了这一问题:)有时提及邻近范围很有用,尤其是在可能引起其他人困惑的情况下。您不必添加它,但我认为如果这样做的话,对许多人来说可能很有用。不幸的是,除非您编辑答案,否则我似乎无法改变我的看法。随时在某处添加一个空格,然后我可以删除downvote。正如我说的,如果您选择添加上述区别,我将很乐意投票。 (2认同)

Mar*_*ulz 26

Mike Brind已经很好地解决了为什么Razor _layout.cshtml在文件名中有一个前导下划线?:

由于Web页面中的布局页面不是直接提供的,因此它们以下划线为前缀.并且Web页面框架已配置为不允许直接请求名称中带有前导下划线的文件.

除此之外,我觉得非常有帮助的使用这种约定来区分之间的全面视图和局部的.

  • 禁止直接请求所有视图页面.下划线无关紧要. (7认同)
  • 顺便说一句,你的引语错过了底部的部分:`因此,有一个技术原因要在文件名前加下划线 - 它与MVC无关. (5认同)

Ken*_*nyZ 11

@Marius Schulz提供了一个很好的参考,但后来忽略了这一点.是的,下划线有助于区分完整视图和部分视图,但更重要的是,它可以防止部分视图直接由其URL加载,这可能会提供一些可能难看的结果!(对于初学者来说,就像没有css一样.)

编辑:Mystere Man是对的...我在想什么?MVC中的URL指向控制器/操作,而不是查看.

此外,可能会混淆并在单独的窗口中显示部分内容,因此命名约定不会阻止这种情况.@Marius Schulz和我对他的引言有同样的误解.

前导下划线是区分完整视图和部分视图的有用约定,我将继续使用它,但它只是一个约定,而不是功能差异.

  • @EdDeGagne - 不,这不是正确的答案.MVC阻止*ALL*视图直接加载,下划线或不加载.下划线最初用于ASP.NET网页,其中视图可以直接加载,但这不适用于MVC. (7认同)
  • @KennyZ:是的,这就是为什么blockquote说*而且网页框架已被配置为不允许直接请求名字中带有前导下划线的文件.* (2认同)