Razor格式化<text>内容

Dan*_*ugg 5 indentation visual-studio-2010 razor

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

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

@MyHelper.MyMethod(@<text>
<p>Hello world</p>
</text>)
Run Code Online (Sandbox Code Playgroud)

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

客户端HTML标记(及其内容),例如<div>遵循我指定的格式样式,但无论我在哪里添加(或删除)<text>元素Tag Specific Options...,都没有效果.在前面的例子中,期望的结果是<text>元素内容被格式化为<div>元素内容.

是否有任何技巧,或变通执行,以在相同的格式风格<text>元素,其他块级客户端HTML元素(<div>,<section>)

我已经看到Razor语言的其他类似格式问题,例如这里这里,所以这不是没有先例,似乎可能没有解决方案.无论哪种方式,也许有人遇到过修复.

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


附录
(我对此感到厌倦.)

也许这个问题在2012年已经解决了; 不知道,还没有更新.但是,<text>块,@前缀块等不能很好地格式化.

另一个例子,这次是@-prefixed块(构造等)

@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>
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来或多或少,对吗?是的,不幸的是它实际上在语法上无效.@内部的-prefix 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>
    }
}
Run Code Online (Sandbox Code Playgroud)

太棒了,失去了内心的压痕.便便.

好吧,那些<text>块怎么样,它们必须对某些东西有用,对吧?当然,将外foreach块的内容包装在一个<text>块中.现在,就Razor而言,@-prefixing inner 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>
}
Run Code Online (Sandbox Code Playgroud)

好的,很好 ; 然而,虽然这有效,但它确实证明了我原来问题的问题.现在<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>
}
Run Code Online (Sandbox Code Playgroud)

或者更好的是,在其他人的范围内拧紧<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>
    }
}
Run Code Online (Sandbox Code Playgroud)

TL;博士

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

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

Ale*_*ici 1

解决方法是:

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