Visual Studio .cshtml文件

时间:2015-10-29 03:05:46

标签: c# asp.net-mvc razor visual-studio-2015 resharper

这是最令人气愤的事情,经过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>

3 个答案:

答案 0 :(得分:16)

您提到刚刚在此问题发生之前安装了Resharper,因此您的问题很可能是由R​​esharper引起的。

默认情况下,Resharper会在您键入时执行许多额外的格式修复,但您可能会发现许多这些默认修复与您的编码风格冲突。

您可以通过Resharper > Options > Code Editing > HTML|Razor|etc > Formatting Style

配置Resharper的代码格式选项

在这种情况下,您的问题是设置Do not indent children of包含您默认不需要的标记。

答案 1 :(得分:2)

从3周开始(自VS 2013之后更新到Visual Studio 2015 SP 2)我遇到了问题,cshtml文件中的复制/粘贴和注释会破坏我的文件格式。 有趣的是,标签缩进位于第7列。我不明白为什么。

更新到VS 2015 SP 3后,问题未被禁止。

然后我发现,在我的cshtml文件中,“@”符号销毁了我的副本/粘贴/评论:

@model MAWGridModel<AktionGridRowModel>

@if (Model != null)
{
    @Html.DevExpress().GridView(settings =>
    {
        settings.Name = "MAWAktionenErgebnisGrid";
    ...
    }).Bind(Model).GetHtml();
}

“Html.DevEpress()......”之前的“@”全部毁掉了。这里的代码片段适合我。 (我希望它真的能做到。)

    @model MAWGridModel<AktionGridRowModel>

    @if (Model != null)
    {
        Html.DevExpress().GridView(settings =>
        {
            settings.Name = "MAWAktionenErgebnisGrid";
        ...
        }).Bind(Model).Render();
    }

希望它可以帮到你。

答案 2 :(得分:0)

我使用VS2017(asp.net core 2.2),使用Devextreme控件,并且有完全相同的问题。
我已经取消复制粘贴后的自动自动格式设置了,因为已经有一段时间了(因为它不起作用)。
由于我具有大于100个DE控件的大视图(每个视图均具有大约5个属性),我不得不不时地格式化视图(使用“格式化文档”,从而“格式化选择”在我的安装中不起作用,顺便说一句)时间,使文件结构“可读”。

如果这样做,我将遇到完全相同的问题(这些行将在右边显示,直到它们在“监视器外”不可见并且我有一个大的监视器...)。
为了使文件再次“可读”,我必须手动编辑每一行(删除错误的空间)。

我现在由于尝试错误而浪费了数小时。 我发现的唯一(非常丑陋和糟糕)“解决方法”是将整个代码写在一行上。
示例:@(Html.DevExtreme().TextBox().ID("AngebotFirma").Value(@Model.PAB_Firma).MaxLength(45).Placeholder("Firma...").InputAttr("autocomplete", "company")

这样,整个文档(HTML,JQuery和Devextreme(一行))的格式(预期)是正确的。

所以..这不是不是解决方案,但可以节省时间。至少在完成并测试视图之前,我将代码更改为“一行代码”。 之后,我-也许-会将代码改回“多行” ...