2012-02-03 8 views
5

これは私の最初の投稿ですので、こんにちは:)剃刀の構文:ifsとdivでループする

条件付きで開いて閉じたいと思います。私は間違って何をしていますか?

@foreach (var m in Model.Recipes) 
{ 
    if (left) 
    { 
     <div class="rec-line"> 
    }  

    if (left) 
    {    
     </div> 
    } 
} 
+0

、実際に何が起こっていますか? –

+0

そのような異なるブロックで要素を開閉することはできません。あなたは何を達成しようとしていますか?あなたがやろうとしていることをする良い方法があるかもしれません。 –

+0

これは以下で解決しましたが、好奇心のためにコレクションの要素をペアでリストしています。したがって、すべての奇妙な要素で私はdivを開き、1つ後に私はそれを閉じます。 [div] [left] [right] [/ div] [div] ... –

答えて

5

は、あなたが使用してかみそりエンジンが<div>がテキストであることを知っているようにエスケープ文字を使用する必要が@:

コード:

あなたが起こることを期待している正確に何を記述することができます
@foreach (var m in Model.Recipes) 
{ 
if (left) 
{ 
    @:<div class="rec-line"> 
}  

if (left) 
{    
    @:</div> 
} 
} 
+0

いいえしない:http://haacked.com/archive/2011/01/06/razor-syntax-クイックリファレンス.aspx –

+2

@Shark - そうです。あなたの記事 "' @if(foo){ @:プレーンテキストは@bar }を読んでください。明らかに、opの元のコードをコンパイルしようとすると、論理エラーが発生し、正しく表示されません。この状況の修正は、@:マーカーを追加して、htmlマークアップがc#ステートメントを壊さないようにすることです。 @がなければ、これはレンダリングされません@:これはレンダリングされます。 –

+1

ああ、あなたが今言っていることが分かります。いい視点ね。 –

関連する問題