我注意到 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 语言的其他此类格式问题,例如here和here,因此这并非没有先例,而且似乎可能没有解决方案。无论哪种方式,也许有人遇到了修复。
这是一个 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,因为它出现在外部块(外部)的不间断范围内。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>
块内容不遵守 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 格式按照描述的方式运行?(或者,这只是我的强迫症的一些白日梦吗?)