【问题标题】:Why do I need an underscore for partial views in asp.net mvc为什么asp.net mvc中的部分视图需要下划线
【发布时间】:2012-05-06 11:22:09
【问题描述】:

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

【问题讨论】:

    标签: asp.net-mvc partial-views


    【解决方案1】:

    Mike Brind 在Why does Razor _layout.cshtml have a leading underscore in file name? 问题中很好地说明了这一点:

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

    除此之外,我发现使用此约定区分完整视图和部分视图非常有用。

    【讨论】:

    • 所有视图页面都被阻止直接请求。下划线无关紧要。
    • 顺便说一句,您的报价错过了底部的部分:So there is a technical reason for prefixing the file names with an underscore - it just isn't relevant to MVC.
    【解决方案2】:

    @Marius Schulz 提供了一个很好的参考,但没有抓住重点。是的,下划线有助于区分完整视图和部分视图,但更重要的是,它防止部分视图直接通过其 URL 加载,这可能会提供一些潜在的丑陋结果! (对于初学者来说,就像没有 css 一样。)

    编辑:神秘人是对的……我在想什么? MVC 中的 URL 指向控制器/动作,而不是查看。

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

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

    【讨论】:

    • 这是正确的答案,它不仅仅是一个 MVC 约定。
    • @KennyZ:是的,这就是为什么块引用说 并且网页框架已配置为不允许直接请求名称中带有前导下划线的文件。
    • @Marius,很抱歉吹毛求疵,我想我觉得你在块引用后的后续行动不再强调这一点,并使它听起来更像是“只是一个惯例”的答案。跨度>
    • @KennyZ:我明白你在说什么——我编辑了我的答案并澄清了我的观点。
    • @EdDeGagne - 不,这不是正确的答案。 MVC 防止直接加载 ALL 视图,下划线与否。下划线最初用于 ASP.NET 网页,可以直接加载视图,但这不适用于 MVC。
    【解决方案3】:

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

    【讨论】:

    • @tsemer - 错误,请参阅我对 Marius 的评论,如果您费心阅读它们,这已经得到解决。下划线只有在使用Web Pages框架时才需要,它只是MVC中基于Web Pages编码标准的约定,在MVC中没有任何用处。另请参阅 KennyZ 的答案,他认为我的答案是正确的......对于 MVC。
    • 很抱歉没有阅读整个 cmets 部分。我会尽可能删除反对票(除非您编辑,否则 21 天)。无论如何,由于您的回答也让我感到困惑,我是否可以建议对其进行编辑以澄清“在 MVC 中是这样,在 WebPages 中是这样”。然后我也将它作为最佳答案投票:)。授予网页与确切的 OP 问题无关,但我仍然相信这对点击此页面的人最有用。
    • @tsemer 但是这个问题被标记为 MVC,而不是网页。如果 OP 总是要解释上下文,那么标签有什么用?
    • 我在之前评论的最后一句中预先回答了这一点:) 有时提及相邻范围很有用,特别是如果它可能会引起其他人的困惑。您不必添加它,但我认为如果您添加它可能对许多人有用。不幸的是,除非您编辑答案,否则我似乎无法改变我的反对意见。随意在某处添加空间,然后我可以删除反对票。正如我所说,如果您选择添加上述区别,我将很乐意投票。
    猜你喜欢
    • 2011-10-11
    • 2017-01-30
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多