【问题标题】:Razor Helper Syntax Auto Formatting Ugly. How to fix?Razor Helper 语法自动格式化丑陋。怎么修?
【发布时间】:2011-09-21 12:54:59
【问题描述】:

所以我只是对 Visual Studio 格式化剃须刀代码的方式感到不满。我一直在使用 Visual Studio 以及它如何格式化 UI 代码时遇到一些问题,它似乎总是做得非常糟糕,业界不想效仿。

所以这个例子看起来真的很愚蠢。我试图弄清楚是否有模组或方法可以解决这个问题。它看起来真的很糟糕。

有人知道吗?哈哈

@using Company.Mobile2.Enums
@helper BidsByShipment(string generatedId, int bidsCount, int activeBidsCount)
    {
        if (bidsCount > 0)
        {
    <a class="Company-listview-link Company-listview-bids" href="/Shipping/Bids/ByShipment?id={0}">
        @if (activeBidsCount > 0)
        {
            <text>@bidsCount (@activeBidsCount @GetStr("Company"))</text>
        }
        else
        {
            <text>@bidsCount</text>
        }
    </a>
        }
        else
        {
    <text>0 @GetStr("Company")</text>
        }
}

【问题讨论】:

  • 我有同样的问题,但还没有找到一个好的方法来解决它:( VS 通常会在我的“{”前面放一个空格。它肯定需要一些工作:(跨度>
  • 是的,这是狗的早餐。也让我发疯 - 特别是因为它已经被打破了......
  • 我希望 VS 只是让我们选择不格式化 UI 代码。
  • 从技术上讲,这是我的副本...我先发布了我的。

标签: visual-studio syntax formatting razor


【解决方案1】:

我为格式化剃须刀文档做了一个扩展。

安装:

1) 在扩展中搜索“razor-formatter”

2) 按 CTRL + P AND 然后在下面输入命令并按回车:

ext install Kookweb.razor-formatter

VSCode 市场上的链接:

https://marketplace.visualstudio.com/items?itemName=Kookweb.razor-formatter

github 上的源码:

https://github.com/Kookweb-ir/razor-formatter

当然这不是最好的格式化程序,但这只是目前的格式化程序。

这只是一个简单的 HTML 美化器,适用于 Razor 文档。如果有人致力于它并使其完美,我会很高兴。

【讨论】:

  • 很遗憾,这个扩展已经不复存在了。
【解决方案2】:

对于所有抱怨 Visual Studio 的人来说,我认为令人印象深刻的是,它允许您在 HTML 和 C# 之间切换而无需被告知您使用的是哪种语言。

在更实际的情况下,我认为我的建议是将上面显示的许多内容结合起来。具体...

  1. 避免使用@: 来表示 HTML 的文字字符串。当你重新格式化你的代码时,Visual Studio 经常在它后面添加一行,即使没有,你也可能以无限递归结束,使用 @ 来切换回代码,等等。如上所述,对未在 HTML 标记中编码的内容使用 WriteLiteral;否则 Visual Studio 将在您使用 .如果...
  2. ... 您使用了在 @{ ... } 块中插入代码的绝妙想法。

鉴于这两个,我发现 CTRL K, D 重新格式化代码为一个让我发疯的表格块提供了完美的结果:

<table>

<tr>
    <th>Chapter</th>
    @*<th class="woCoursewareFindTd">Page count</th>*@
    <th>Contents</th>
</tr>

@{
    foreach (var c in Model.Chapters)
    {
        if (c.Courseware2Id == c2.Courseware2Id)
        {
            <tr>
                <td>
                    @{

                        if (c.ChapterFileName.ToString().ToLower() == "none")
                        {
                            WriteLiteral(c.Courseware3Name);
                        }
                        else
                        {
                            <a href="@c.Href">@c.Courseware3Name (click to download)</a>
                        }
                    }
                    <p>(@c.PageCount page@(c.PageCount == 1 ? "" : "s"))</p>
                </td>

                <td>
                    @Html.Raw(c.SectionText)
                </td>
            </tr>
        }
    }
}

完美!感谢上述所有 StackOverflow 贡献者。

【讨论】:

    【解决方案3】:

    您是否已将 Visual Studio 设置为使用制表符缩进?这揭示了一个 Razor 格式错误,它会插入空格而不是应有的制表符。解决方法是切换到空格缩进。

    【讨论】:

      【解决方案4】:

      显然暂时没有办法解决,这是他们在另一个相关问题中的回答:Why doesn't Visual Studio code formatting work properly for Razor markup?

      【讨论】:

        【解决方案5】:

        C# 代码格式与 HTML 代码分开。如果您想要适当的缩进,那么只需将一些无用的包装标签放在您期望有缩进的任何地方,您就会得到缩进。不过,这将是一种反模式。

        这里是代码。对于您定义的函数,我不确定它是否真的有效。

        @using Company.Mobile2.Enums
        <div>
        
        @helper BidsByShipment(string generatedId, int bidsCount, int activeBidsCount)
            {
                if (bidsCount > 0)
                {
                 <a class="Company-listview-link Company-listview-bids" href="/Shipping/Bids/ByShipment?id={0}">
                @if (activeBidsCount > 0)
                {
                    <text>@bidsCount (@activeBidsCount @GetStr("Company"))</text>
                }
                else
                {
                    <text>@bidsCount</text>
                }
                </a>
                }
                else
                {
                 <text>0 @GetStr("Company")</text>
                }
        }
        <div>
        

        【讨论】:

        • 我看不出这将如何解决问题。不好的缩进在 html 上,而不是在 c# 上。那么如何放置包装标签来解决这个问题,包装标签仍然会缩进不正确?也许一个简短的例子会有所帮助?
        猜你喜欢
        • 2011-02-03
        • 2019-08-18
        • 2023-02-01
        • 2011-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-28
        相关资源
        最近更新 更多