Razor格式化<text>内容</text>

时间:2013-01-16 15:01:19

标签: visual-studio-2010 razor indentation

我注意到Razor <text>标记拒绝遵循任何格式约定。例如,在格式化cshtml文档时,我最终会得到如下代码:

@MyHelper.MyMethod(@<div>
    <p>Hello world</p>
</div>)

@MyHelper.MyMethod(@<text>
<p>Hello world</p>
</text>)

请注意,这不是Razor模板函数特有的,<text>块在任何地方都会做同样的事情。

客户端HTML标记(及其内容)(例如<div>)遵循我指定的格式样式,但无论我在何处添加(或删除)标签特定选项... 中的<text>元素,没有任何效果。在前面的示例中,期望的结果是<text>元素内容的格式类似于<div>元素内容。

是否有任何技巧或解决方法可以在<text>元素上强制执行与其他块级客户端HTML元素相同的格式样式( <div><section>等等

我见过Razor语言的其他格式问题,例如herehere,所以这并非没有先例,似乎可能没有解决方案。无论哪种方式,也许有人遇到过修复。

这是一个Razor 2.X网站,建于VS 2010


附录
我已经厌倦了这个。

也许这个问题在2012年已经解决;不知道,还没有更新。但是,<text>块,@ - 前缀块等等,格式不正确。

另一个例子,这次是@ - 前缀块(构造和

@foreach (var foo in bar) {
    <div>@(foo.A)</div>
    <div>@(foo.B)</div>
    @foreach (var qux in foo.C) {
        <div>@(qux.D)</div>
        <div>@(qux.E)</div>
    }
}

看起来或多或少,对吗?是的,不幸的是它实际上在语法上无效。内部@上的foreach - 前缀是不允许的,因为它出现在外部块的不间断范围内(外部foreach )。

解决方案?忽略内部@中的foreach。格式化时会发生什么?

@foreach (var foo in bar) {
    <div>@(foo.A)</div>
    <div>@(foo.B)</div>
    foreach (var qux in foo.C) {
    <div>@(qux.D)</div>
    <div>@(qux.E)</div>
    }
}

太棒了,失去了内在的压痕。大便。

好的,那些<text>块怎么样,它们必须对某些东西有用,对吧?当然,将foreach块中的外部<text>块的内容包装起来。现在,就Razor而言,@ - 为内部foreach添加前缀在语法上是有效的。

@foreach (var foo in bar) {
    <text>
    <div>@(foo.A)</div>
    <div>@(foo.B)</div>
    @foreach (var qux in foo.C) {
        <div>@(qux.D)</div>
        <div>@(qux.E)</div>
    }
    </text>
}

好的,很好;然而,虽然这有效,但它确实证明了我原来问题的问题。 现在<text>块内容不符合缩进。为什么我们不能拥有:

@foreach (var foo in bar) {
    <text>
        <div>@(foo.A)</div>
        <div>@(foo.B)</div>
        @foreach (var qux in foo.C) {
            <div>@(qux.D)</div>
            <div>@(qux.E)</div>
        }
    </text>
}

或者更好的是,拧紧<text>块并允许@ - 在其他人范围内的前缀构造:

@foreach (var foo in bar) {
    <div>@(foo.A)</div>
    <div>@(foo.B)</div>
    @foreach (var qux in foo.C) {
        <div>@(qux.D)</div>
        <div>@(qux.E)</div>
    }
}

TL;博士

打电话给我肛门,叫我疯了。没关系;据我所知,无论格式设置如何,此产品都无法正常工作。

有谁知道如何强制VS 2010 Razor格式化行为如上所述? (或者,这只是我的OCD的一些梦想吗?

1 个答案:

答案 0 :(得分:1)

它的解决方法是:

  1. 右键单击cshtml文件
  2. 打开...
  3. 选择XML (Text) Editor
  4. CTRL + E,D