2013-01-16 17 views
5

我注意到剃刀<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語言有關,如herehere,所以這不是沒有先例,似乎可能沒有解決方案。無論哪種方式,也許有人遇到了修復。

這是一個剃刀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格式的行爲如上所述? (或者,這只是一些白日夢對我的強迫症?)

+1

這簡直太難過了。解決方案以及幾乎所有的Razor格式問題是:**不要格式化文檔**。坦率地說,這是廢話。像這樣的問題和[這](http://stackoverflow.com/questions/13829012/the-system-web-razor-api-documentation)導致我認爲有很多截止日期只是「正在滿足」 。 – Dan

回答

1

用於它的解決方法是:

  1. 右鍵單擊cshtml文件
  2. 打開方式...
  3. 選擇XML (Text) Editor
  4. CTRL + E,d
+0

+1這是一個「解決方案」;) - 我忘了提及CodeMaid的「保存格式」,所以我不需要手動格式化文檔。我想這是問題的一部分,我已經放棄了格式化文檔的控制權。無論如何,感謝您的建議,但是我不知道這是否是一個可行的長期解決方案。 – Dan