2013-07-01 31 views
11

bir Jilet görünümünde Bu kod,: Razor `if` kapanma `` `` `açıldı` <table> `etiketi var mı?

if (true) 
{ 
    <table> 
     <tbody> 
} 

... 

if (true) 
{ 
     </tbody> 
    </table> 
} 

çalışmaz. İlk if() deyiminde } kapanış olduğunu iddia ediyor ve bunun <table> etiketi nedeniyle olduğunu tahmin ediyorum.

<table> etiketlerimi koşullu olarak eklemek için bu konuda çalışabileceğim bir yol var mı?

+1

Tek bir ifade içinde '

...
'tümünü kapatırsanız çalışır mı? Öyleyse, bunun yerine kodunuzu değiştirmelisiniz. Hangi senaryoda tablo üstbilgisini ve altbilgi etiketlerini koşullu olarak yazdırmak istersiniz, ancak tablonun içinde ne varsa yazdırabilirsiniz. Durum yanlışsa, ve 'etiketleriyle rastgele olmaz mıydınız? – qJake

+0

Kod bloğum bir foreach() {} 'içinde yer alıyor ve tablo varlıklarımı tablo değerine göre ayırıyor (varlık türünü belirtir) ve yalnızca tür başına bir tablo istiyorum. 'If ​​() {}', değiştirilen tablo türünü kontrol eder (varlıklar listesi bu türe göre sıralandığından). – Kehlan

cevap

27

etiketleri prepending deneyin @::

if (true) 
{ 
    @:<table> 
     @:<tbody> 
} 

... 

if (true) 
{ 
     @:</tbody> 
    @:</table> 
} 
+0

+1 Bu aslında cevabımdan daha iyi görünüyor. – Fenton

+0

Bu kesinlikle en iyi çözümdür. Teşekkürler! – Kehlan

+4

Jilet otomatik formatı, bitiş etiketlerini neden yeni bir satıra yerleştiriyor? –

1

Jilet varsayılan olarak ifadesinin içinde olmak etiketleri kapanış eşleştirme bekliyoruz yapar.

Sen Razor yardım etmeye özel <text> etiketi kullanabilirsiniz:

@if (true) { 
    <text> 
    <table> 
     <tbody> 
    </text> 
} 
+1

Razor hala bununla şikayet ediyor çünkü "

" ve "", HTML etiketleridir ve "" etiketinin kapanmasından önce kapanmasını bekler. – StriplingWarrior

+0

VS2012, MVC4 kullanıyorum ve benim için çalışıyor. Aynı kullanıyor musun? Her durumda, kapanış etiketleriyle ilgili hala uyarılar alıyorsunuz, bu yüzden D Stanley'in cevabını tercih ediyorum. – Fenton

+0

Evet, bu Jiletin '}' yi tanımasını engellemez, fakat dediğiniz gibi hala uyarılar var. – StriplingWarrior

2

Ardından bu kişinin html olarak ayrıştırıldı değil, dizeleri olarak takabilirsiniz ve sözdizimi interfer değildir:

@Html.Raw(true?"<table><tbody>":"") 

@Html.Raw(true?"</tbody></table>":"") 
İlgili konular