5

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

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

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

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

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

是否有任何技巧或变通方法可以在<text>元素上强制使用与其他块级客户端 HTML 元素(<div>、、<section>)相同的格式样式?

我已经看到 Razor 语言的其他此类格式问题,例如herehere,因此这并非没有先例,而且似乎可能没有解决方案。无论哪种方式,也许有人遇到了修复。

这是一个 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>
    }
}

看起来或多或少都很好,对吧?是的,不幸的是它实际上在语法上是无效的。不允许@在内部使用-prefix,因为它出现在外部块(外部)的不间断范围内。foreachforeach

解决方案?@从内部省略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>块内容不遵守 indentation。为什么我们不能有:

@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 格式按照描述的方式运行?(或者,这只是我的强迫症的一些白日梦吗?

4

1 回答 1

1

一种解决方法是:

  1. 右键单击cshtml文件
  2. 打开用...
  3. 选择XML (Text) Editor
  4. CTRL + E、D
于 2013-01-16T17:13:23.970 回答