2013-01-16 19 views
5

Razor <text> etiketinin biçimlendirme kurallarına uymayı reddettiğini fark ettim. Bir cshtml belge biçimlendirme Örneğin, aşağıdaki gibi bir kod ile sonuna kadar:<text> içeriğinin düzeltilmesi

bu da Jilet şablon fonksiyonlarına özgü olmadığını
@MyHelper.MyMethod(@<div> 
    <p>Hello world</p> 
</div>) 

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

Not <text> blok yerde aynı şeyi yapacağız. Böyle <div> olarak

istemci HTML etiketleri (ve içerikleri) Ancak ne olursa olsun ben (veya kaldırmak) eklemek Etiket Özgü Seçenekler <text> eleman nerede, ben belirttiğiniz biçimlendirme stili izleyin. .., hiçbir etkisi yoktur. İstenen sonuç, <text> öğe içeriğinin, önceki örnekte <div> öğe içeriği gibi biçimlendirilmiş olması olabilir.

diğer blok düzeyi istemci HTML öğelerinin bu kadar gördüğüm

(vb<div>, <section>) <text> unsurları aynı biçimlendirme stili uygulamak için herhangi bir hile veya alternatif çözüm var mı here ve here gibi Razor diliyle ilgili diğer biçimlendirme sorunları, bu durum emsalsiz değildir ve çözüm bulunmayabilir. Her iki durumda da, belki birisi bir düzeltme ile karşılaştı.

O
VS 2010


Ek bina, bir Jilet 2.X web sitesi var (ben bu yorgun büyüdüm.)

Belki de bu 2012 yılında sorun çözüldü; Bilmiyorum, güncellemedim. Ancak, <text> blokları, @ - düzeltilmiş bloklar ve daha fazlası iyi biçimlendirilmez.

Başka bir örnek, bu kez @ -prefixed blokları (yapılar ve)

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

doğru, daha fazla ya da daha az iyi görünüyor? Evet, maalesef aslında sözdizimsel olarak geçersiz. foreach numaralı iç @ -prefix'in izin verilmez, bir dış bloğun kesintisiz kapsamı içinde (dış foreach).

Çözüm? @'un içini foreach'dan çıkarın. Biçimlendiğimde ne olur?

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

Harika, iç girintiyi kaybettiniz. Kaka.

Tamam, bu <text> bloklarına ne dersiniz, bir şey için faydalı olmalılar, değil mi?Tabii, bir <text> blokta dış foreach bloğun içeriğini sarın. Şimdi, bildiğim kadarıyla Jilet söz konusu olduğunda, iç foreach -prefixing @ sözdizimsel geçerlidir.

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

Tamam, ince; Ancak, bu çalışırken orijinal sorumun konusunu örneklendirir. Şimdi <text> blok içeriği çukurlaşma uymamaktadır. Neden sadece olamaz:

daha iyisi
@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> 
} 

Veya <text> blok vida ve diğerleri kapsamında @ -prefixed yapıları izin:

@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

Bana anal deyin, bana deli de. Önemli değil; anlatabildiğim kadarıyla, bu ürün formatlama ayarlarımdan bağımsız olarak doğru çalışmıyor.

kimse anlatıldığı gibi VS davranmaya 2010 Razor biçimlendirme zorlamak için nasıl biliyor mu? (veya benim OKB için bu sadece bazı boru-rüya?)

+1

Bu sadece üzücüdür. Bunun çözümü ve hemen hemen her Razor biçimlendirme sorunu: ** Belgenizi biçimlendirmeyin **. Açıkçası bu saçmalık. Bunun gibi konular ve [bu] (http://stackoverflow.com/questions/13829012/the-system-web-razor-api-documentation) sadece "karşılaşılmakta olan" bir sürü son teslim tarihi olduğunu varsaymamı sağladı. . – Dan

cevap

1

bunun için bir çözüm olacaktır: ile

  1. Sağ cshtml dosyasını tıklayın
  2. Aç ...
  3. seç XML (Text) Editor
  4. basın CTRL + E, D
+0

+1 Bu bir "çözüm";) - "Biçimle Kaydet" seçeneğiyle CodeMaid elimde olduğundan bahsetmeyi ihmal ettim, bu yüzden belgeleri el ile biçimlendirmem gerekiyor. Sanırım problemin bir parçası, belgeleri biçimlendirdiğimde kontrolünü unutmuşum. Her neyse, öneri için teşekkürler, ancak bunun uygun ve uzun vadeli bir çözüm olup olmadığını bilmiyorum. – Dan