【问题标题】:How can I make code indentation behave correctly in vbhtml razor files?如何使代码缩进在 vbhtml razor 文件中正确运行?
【发布时间】:2011-11-25 13:12:08
【问题描述】:

这让我在拐弯处。我是VB.NET 表单开发人员,对ASP.NET 很陌生,对MVC 完全陌生。我正在创建使用VB.NET Razor 语法的vbhtml 页面,而且我似乎一直在与试图错误缩进我的代码的UI 作斗争。以下面的示例为例,基于新的Razor 视图的模板页面:

@Code
    Layout = Nothing
End Code
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div>
        @If True Then
            @<ul>
                @For x = 1 To 2

                Next
            </ul>
                End If '<-- Randomly indented too far
    </div>
</body>
</html>

在上面的例子中,只要我在Next 之后点击返回,End If 下面的两行会随机从它应该在的位置向前跳两个制表符。在其他示例中,我遇到了一个圆圈,将一条线推到正确的位置会使另一条线偏离位置,反之亦然。

在这一点上我很生气,我很乐意完全禁用自动缩进并自己管理它,但我什至不知道如何做到这一点!根据另一个线程的建议,我禁用了 HTML 页面的缩进,但所有停止的只是缩进 HTML 标记 - 代码块仍然到处滑动。

我认为扩展程序可能会导致问题,但我将它们全部禁用并重新启动,问题仍然存在。我在做一些根本错误的事情吗?我很难相信Microsoft 会发布如此糟糕的东西,所以我似乎更有可能只是没有正确使用它。

【问题讨论】:

  • 我认为您可以使用“格式化整个文档”选项,它是 Visual Studio 中“HTML 源代码编辑”工具的一部分。或者,您可以定期使用命令 (Ctrl+E, D) 来格式化文档。
  • @Pramodtech:在我的环境中,Ctrl+E,D 调出“添加现有文件”对话框,但我尝试了 Ctrl+K,D,这似乎可以格式化整个文档。麻烦的是,它使文档变得比以前更糟。似乎 MS 在 vbhtml 的自动缩进中存在一个严重的错误,考虑到 VS 的普遍程度,我觉得这真的很令人惊讶。
  • @wwarby 不只是 VB,它也会影响 C#,这使得它还没有得到解决更加令人困惑。
  • 这里有一个 Microsoft Connect 中的错误报告:connect.microsoft.com/VisualStudio/feedback/details/621084

标签: asp.net-mvc vb.net asp.net-mvc-3 razor indentation


【解决方案1】:

我在另一个问题上找到了一个(时尚的)解决方案(在发布这个问题之前我真的很努力地搜索过,但找不到任何东西):Why doesn't Visual Studio code formatting work properly for Razor markup?

基本上,解决方案似乎是确保您的代码使用空格而不是制表符作为空格。虽然由于增加了空白而增加了页面的整体大小,但它确实减少了问题(虽然没有完全消除它)。在链接的线程上,似乎与微软有联系的人承认,这确实是一个与 HTML 和 VB.NET 的重叠格式化程序有关的错误,他们希望在新版本中对其进行改进。我已将每个缩进减少到 2 个空格以减少对带宽的影响。

感谢做出贡献的人。

【讨论】:

    【解决方案2】:

    这里更好的选择(而不是使用空格作为制表符)是将 HTML 和 C#/VB 的块缩进更改为“块”而不是“智能”。这不是一个完整的解决方案,但与使用空格相比,IMO 的痛苦要小得多!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-09
      • 2020-02-10
      • 2021-11-09
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多