我注意到剃刀<text>
標記拒絕遵循任何格式約定。例如,格式化cshtml
文檔時,我結束了類似下面的代碼:剃刀格式化爲<text>內容
@MyHelper.MyMethod(@<div>
<p>Hello world</p>
</div>)
@MyHelper.MyMethod(@<text>
<p>Hello world</p>
</text>)
注意,這是不特定剃刀模板函數要麼,<text>
塊的任何地方都會做同樣的事情。
客戶端HTML標籤(及其內容)如<div>
跟着我指定的格式風格,但是無論在哪裏,我想補充(或刪除)在標記特定選項<text>
元素。 ..,沒有效果。預期的結果是<text>
元素內容的格式與上例中的<div>
元素內容一樣。
是否有任何技巧,或變通執行,以對<text>
元素相同的格式樣式,其他塊級客戶端HTML元素(<div>
,<section>
等)
我見過其他格式問題與Razor語言有關,如here和here,所以這不是沒有先例,似乎可能沒有解決方案。無論哪種方式,也許有人遇到了修復。
這是一個剃刀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>
}
}
看起來或多或少精細,是嗎?不幸的是,它實際上在語法上是無效的。內部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>
塊,並允許他人的範圍內@
-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>
}
}
TL;博士
打電話給我肛門,叫我瘋了。沒關係;據我所知,無論我的格式設置如何,本產品無法正常工作。
有誰知道如何強制VS 2010 Razor格式的行爲如上所述? (或者,這只是一些白日夢對我的強迫症?)
這簡直太難過了。解決方案以及幾乎所有的Razor格式問題是:**不要格式化文檔**。坦率地說,這是廢話。像這樣的問題和[這](http://stackoverflow.com/questions/13829012/the-system-web-razor-api-documentation)導致我認爲有很多截止日期只是「正在滿足」 。 – Dan