2013-01-16 19 views
5

私は、Razor <text>タグが書式設定の慣行を拒否していることに気付きました。 cshtml文書をフォーマットするとき、例えば、私は次のようなコードで終わる:これはどちらかカミソリテンプレート関数に固有ではないことをRazorの書式設定<text>内容

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

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

注意、<text>ブロックはどこでも同じことを行います。このよう<div>として

クライアントのHTMLタグ(とその内容は)私はしかし、関係なく、私は(のかを削除)を追加するところの、タグ固有のオプションで<text>要素を、指定した書式のスタイルに従ってください。 ..、効果はありません。所望の結果は、<text>要素の内容が、前の例では<div>要素の内容のように書式設定されていることになります。

他のブロックレベルのクライアントのHTML要素のような私が見てきた

(など<div><section>を、)<text>要素に同じフォーマットスタイルを強制する任意のトリック、または回避策がありますherehereなどのRazor言語の書式設定の問題など、これは先例がないわけではないため、解決策がないようです。いずれにしても、誰かが修正を見つけた可能性があります。

これは、VS 2010で


補遺
を構築し、カミソリ2.Xのウェブサイトです(私はこれの疲れ成長してきました。)おそらく

この2012年に問題が解決されました。知らない、更新していない。ただし、<text>ブロック、@ -prefixedブロックなどがあります。

別の例として、この時間@ -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> 
    } 
} 

素晴らしい、内側のインデントを失った。 Poo。

これらのブロックについては、何かのために役立つはずですか?確かに、外側foreachブロックのコンテンツを<text>ブロックにラップします。今、Razorに関する限り、@ - 内部のプレフィックスforeachは構文的に有効です。 [OK]を

@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;

DRを

私に電話してください。関係ない;これまでのところ、フォーマット設定に関係なく、この製品は正しく動作していません。

説明どおりにVS 2010 Razorフォーマットを動作させる方法を知っている人はいますか? (かは、私のOCDのため、このほんの一部、パイプの夢である?)

+1

これは単なる悲しいことです。これに対する解決策、およびほぼすべてのRazorの書式設定の問題は次のとおりです。**書類を書式設定しない**。率直に言って、それはなんてこったです。このような問題と、[this](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に "Format on Save"と書かれていることを忘れてしまったので、マニュアルで書式を設定する必要はありません。私はそれが問題の一部であると考えています。私は書類の書式を設定するのをやめてしまいました。とにかく、提案のおかげで、しかし、これは実現可能な、長期的な解決策かどうか私は知らない。 – Dan