Visual Studio .cshtml 文件中的缩进被破坏
Indentation is broken in Visual Studio .cshtml files
这是最令人恼火的事情,经过 45 分钟的谷歌搜索和测试后,我向论坛的上帝屈服了...如果没有自动缩进,我简直活不下去,即使它只是在 .cshtml 视图文件上
我使用的是 VS2015 社区版。到目前为止,我的 cshtml 文件播放效果很好...
由于某些奇怪的原因,缩进中断了。
我已经试过了:
- 选择标记并按 Ctrl+K 和 Ctrl+F
- 删除并重新添加结束标记(通常会重置缩进)
- 进入工具>选项>文本编辑器>[插入语言或全部]>选项卡
并将它们设置为智能。
我刚刚安装了 ReSharper,才注意到这个问题。不确定是不是这导致的,但这个问题确实是新的,我不记得在那之前见过它。
也很奇怪,有些东西会缩进,而有些则不会
对于那些需要视觉帮助的人,这个缩进让我很沮丧:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Index</title>
</head>
<body>
<h1>Posts Index</h1>
@if (true)
{
<text>
<p>True is true!</p>
</text>
}
</body>
</html>
您提到在出现此问题之前您刚刚安装了 Resharper,因此您的问题很可能是由 Resharper 引起的。
默认情况下,Resharper 会在您键入时进行许多额外的格式修复,但您可能会发现这些默认修复中有很多与您的编码风格冲突。
您可以通过 Resharper > Options > Code Editing > HTML|Razor|etc > Formatting Style
配置 Resharper 的代码格式化选项
在这种情况下,您的问题是设置 Do not indent children of
包含您默认不需要的标签。
3 周以来(自从更新到 Visual Studio 2015 SP 2 后 VS 2013)我遇到了问题,cshtml 文件中的 copy/paste 和评论破坏了我的文件格式。
有趣的是制表符缩进在第 7 列。我不明白为什么。
更新到VS 2015 SP 3后,问题没有被禁止
然后我发现,在我的 cshtml 文件中,一个“@”符号破坏了我的 copy/paste/comments:
@model MAWGridModel<AktionGridRowModel>
@if (Model != null)
{
@Html.DevExpress().GridView(settings =>
{
settings.Name = "MAWAktionenErgebnisGrid";
...
}).Bind(Model).GetHtml();
}
“@"before "Html.DevEpress()...”摧毁了一切。这是对我有用的代码片段。 (我希望它真的可以。)
@model MAWGridModel<AktionGridRowModel>
@if (Model != null)
{
Html.DevExpress().GridView(settings =>
{
settings.Name = "MAWAktionenErgebnisGrid";
// ...
}).Bind(Model).Render();
}
希望对您有所帮助。
我使用 VS2017(asp.net 核心 2.2),使用 Devextreme 控件并遇到完全相同的问题。
我已经停用了复制粘贴后的自动自动格式,因为现在已经很长时间了(因为它不起作用)。
因为我有超过 100 个 DE 控件的大视图(每个控件平均有大约 5 个属性),所以我必须格式化视图(使用 "Format document",其中 "Format selection" 在我的安装中不起作用,b.t.w.) 不时地,使文件结构 "readable".
如果我这样做,我会遇到完全相同的问题(这些线是在右边直到它们不可见,因为 "out of monitor" 而且我有一个大显示器...)。
要再次制作文件 "readable",我必须手动编辑每一行(删除错误的 space)。
我现在已经在试错中浪费了几个小时。
我发现的唯一(非常丑陋和糟糕)"workaround" 是,将整个代码写在一行上。
示例:@(Html.DevExtreme().TextBox().ID("AngebotFirma").Value(@Model.PAB_Firma).MaxLength(45).Placeholder("Firma...").InputAttr("autocomplete", "company")
)
这样,整个文档(HTML、JQuery 以及 Devextreme(一行)的格式(预期)正确。
所以..这不是解决方案,但可能是一种节省时间的解决方法。至少在完成并测试视图之前,我将代码更改为 "one line code"。
之后,我 - 也许 - 会将代码改回 "multiline"...
这是最令人恼火的事情,经过 45 分钟的谷歌搜索和测试后,我向论坛的上帝屈服了...如果没有自动缩进,我简直活不下去,即使它只是在 .cshtml 视图文件上
我使用的是 VS2015 社区版。到目前为止,我的 cshtml 文件播放效果很好...
由于某些奇怪的原因,缩进中断了。
我已经试过了:
- 选择标记并按 Ctrl+K 和 Ctrl+F
- 删除并重新添加结束标记(通常会重置缩进)
- 进入工具>选项>文本编辑器>[插入语言或全部]>选项卡 并将它们设置为智能。
我刚刚安装了 ReSharper,才注意到这个问题。不确定是不是这导致的,但这个问题确实是新的,我不记得在那之前见过它。
也很奇怪,有些东西会缩进,而有些则不会
对于那些需要视觉帮助的人,这个缩进让我很沮丧:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Index</title>
</head>
<body>
<h1>Posts Index</h1>
@if (true)
{
<text>
<p>True is true!</p>
</text>
}
</body>
</html>
您提到在出现此问题之前您刚刚安装了 Resharper,因此您的问题很可能是由 Resharper 引起的。
默认情况下,Resharper 会在您键入时进行许多额外的格式修复,但您可能会发现这些默认修复中有很多与您的编码风格冲突。
您可以通过 Resharper > Options > Code Editing > HTML|Razor|etc > Formatting Style
在这种情况下,您的问题是设置 Do not indent children of
包含您默认不需要的标签。
3 周以来(自从更新到 Visual Studio 2015 SP 2 后 VS 2013)我遇到了问题,cshtml 文件中的 copy/paste 和评论破坏了我的文件格式。 有趣的是制表符缩进在第 7 列。我不明白为什么。
更新到VS 2015 SP 3后,问题没有被禁止
然后我发现,在我的 cshtml 文件中,一个“@”符号破坏了我的 copy/paste/comments:
@model MAWGridModel<AktionGridRowModel>
@if (Model != null)
{
@Html.DevExpress().GridView(settings =>
{
settings.Name = "MAWAktionenErgebnisGrid";
...
}).Bind(Model).GetHtml();
}
“@"before "Html.DevEpress()...”摧毁了一切。这是对我有用的代码片段。 (我希望它真的可以。)
@model MAWGridModel<AktionGridRowModel>
@if (Model != null)
{
Html.DevExpress().GridView(settings =>
{
settings.Name = "MAWAktionenErgebnisGrid";
// ...
}).Bind(Model).Render();
}
希望对您有所帮助。
我使用 VS2017(asp.net 核心 2.2),使用 Devextreme 控件并遇到完全相同的问题。
我已经停用了复制粘贴后的自动自动格式,因为现在已经很长时间了(因为它不起作用)。
因为我有超过 100 个 DE 控件的大视图(每个控件平均有大约 5 个属性),所以我必须格式化视图(使用 "Format document",其中 "Format selection" 在我的安装中不起作用,b.t.w.) 不时地,使文件结构 "readable".
如果我这样做,我会遇到完全相同的问题(这些线是在右边直到它们不可见,因为 "out of monitor" 而且我有一个大显示器...)。
要再次制作文件 "readable",我必须手动编辑每一行(删除错误的 space)。
我现在已经在试错中浪费了几个小时。
我发现的唯一(非常丑陋和糟糕)"workaround" 是,将整个代码写在一行上。
示例:@(Html.DevExtreme().TextBox().ID("AngebotFirma").Value(@Model.PAB_Firma).MaxLength(45).Placeholder("Firma...").InputAttr("autocomplete", "company")
)
这样,整个文档(HTML、JQuery 以及 Devextreme(一行)的格式(预期)正确。
所以..这不是解决方案,但可能是一种节省时间的解决方法。至少在完成并测试视图之前,我将代码更改为 "one line code"。 之后,我 - 也许 - 会将代码改回 "multiline"...