私は Razor テンプレートを使用してこれを実行しようとしています:
@if(isNew)
{
<div class="new">
}
...
@if(isNew)
{
</div>
}
エラーは次のとおりです:
cannot resolve the symbol 'div'
Razor は IF 句内の終了 div タグを好みません。これを機能させるにはどうすればよいですか? 使用しなければならないエスケープはありますか?
ベストアンサー1
Razor は HTML を適切に解析できないため、開始タグと終了タグを次のように分割することを好みません。そのため、プレーン テキストとしてエスケープする必要があります。
@if(isNew)
{
@:<div class="new">
}
...
@if(isNew)
{
@:</div>
}
より一般的なアプローチは、div 内でマークアップを繰り返すことです (部分的または他の方法を使用)。どちらのアプローチがより望ましいかは、条件付き div 間のマークアップの性質によって異なります。
@if(isNew)
{
<div class="new">
<!-- some markup or partial view -->
</div>
}
else
{
<!-- some markup or partial view -->
}
次のいずれかの場合、このアプローチをお勧めします。
- 含まれるマークアップは、他の場所で再利用できるように、部分的に有効に含めることができます。
- 条件付きラッピング マークアップは数行以上になり、その時点でエスケープ マークアップが乱雑になります。
ヘルパー メソッドを使用するオプションも追加する必要があります。
@helper MainMarkup()
{
<!-- some markup or partial view -->
}
@if(isNew)
{
<div class="new">
@MainMarkup()
</div>
}
else
{
@MainMarkup()
}
これは、上記の 2 番目のオプションを使用したいが、マークアップを繰り返したり、あまり多くの部分をネストしたりしたくない場合 (特に、このマークアップがこのビューにのみ関連する場合) に便利です。