SORU
9 Kasım 2011, ÇARŞAMBA


Koşullu HTML Jilet MVC3 kullanarak Öznitelikleri

Değişken strCSSClass sık sık bir değeri vardır ama bazen boş.

"" Eğer strCSSClass boş ise demek ki bu giriş elemanı HTML,,= tüm Sınıf özniteliği. istemiyorum boş bir sınıf= dahil etmek istemiyorum

Aşağıdaki koşullu bir HTML özniteliği yapmak için bir yoldur:

<input type="text" id="@strElementID" @(CSSClass.IsEmpty() ? "" : "class="   strCSSClass) />

Bunu yapmanın daha zarif bir yolu var mı? Elemanın diğer bölgelerinde kullanılan aynı sözdizimini takip edebileceğim özel bir:"@" ? strCSSClass class=

CEVAP
30 NİSAN 2012, PAZARTESİ


Not böyle bir şey yapabilirsiniz(en az MVC3):

<td align="left" @(isOddRow ? "class=TopBorder" : "style=border:0px") >

İnandım ne jilet tırnak aslında tarayıcı olduğunu da ekledi. Rism olarak işaret testi ile MVC 4(almadım test ile MVC 3 ama sanırım davranışı hiç değişmemiş), bu aslında üretir class=TopBorder ama tarayıcılar mümkün ayrıştırma bu iyi. HTML ayrıştırıcıları öznitelik tırnak eksik biraz hoşgörülü olabilirler, amabu boşluk ya da bazı karakterler varsa kırabilir.

<td align="left" class="TopBorder" >

YA

<td align="left" style="border:0px" >

Ne yanlış kendi tırnak sağlayan gider

Eğer her zamanki C Bazı kullanmaya çalışırsanız# iç içe tırnak için sözleşmeler, Jilet güvenli bir şekilde onları kaçmaya çalışıyor çünkü beklediğinizden daha fazla tırnak ile bitireceğiz. Örneğin:

<button type="button" @(true ? "style=\"border:0px\"" : string.Empty)>

Bugerekir<button type="button" style="border:0px"> ama Razor kaçar değerlendirmek için tüm çıkış C# ve böylece üretir:

style="border:0px"

Sadece ağ üzerinden yanıt bakarsanız bunu görürsünüz. Eğer HTML bir Müfettiş kullanırsanız, sık sık aslında DOM, ham HTML değil görüyorsun. DOM ayrıştırmak HTML tarayıcılar, ve sonra-ayrıştırma DOM temsili zaten bazı incelikler başvurdu. Tarayıcı görür bu durumda öznitelik değeri tırnak yok, ekler onları

style=""border:0px""

Ama DOM Müfettiş HTML karakter kodları aslında çok düzgün ekran:

style=""border:0px""

Krom, sağ tıklayın ve seçin Düzenleme HTML, onu tekrardan görebilmek için o pis HTML karakter kodları, yapma bunu temizlemek zorunda gerçek dış tırnak ve HTML kodlanmış iç tırnak.

Jilet kendiniz alıntı yapmak sorun bu çıkar.

Tırnak tam kontrol istiyorsanız

Html Kullanın.Alıntı önlemek için çiğ kaçış:

<td @Html.Raw( someBoolean ? "rel='tooltip' data-container='.drillDown a'" : "" )>

İşler:

<td rel='tooltip' title='Drilldown' data-container='.drillDown a'>

Yukarıda bir değişken herhangi bir HTML çıktısı değilim çünkü son derece güvenlidir. Tek değişken, ilgili üçlü bir durumdur. Ancakdikkat edinbu son tekniği, kullanıcı tarafından sağlanan veri dizeleri binanın bazı güvenlik sorunları ortaya çıkarmak olabilir. E. g. kullanıcı tarafından sağlanan veri, Html kullanımından kaynaklanan veri alanlarından bir nitelik yerleşik.Çiğ anlamına gelir dize olabilir içeren bir erken biten özniteliği ve sonra etiketi başlayan bir komut dosyası etiketi olan bir şey adına şu anda oturum açmış kullanıcı(muhtemelen daha farklı giriş kullanıcı). Belki bir sayfa ile bir listedeki bütün kullanıcıların resimleri ve ayarı bir araç ipucu için kullanıcı adı her kişi, ve bir kullanıcı adında kendini '/><script>$.post('changepassword.php?password=123')</script> ve şimdi başka bir kullanıcı kim manzaralı bu sayfa şifrelerini anında değişmiş bir şifre bu kötü niyetli bir kullanıcı bilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ecf150king

    ecf150king

    20 Ocak 2006
  • Semantic Mastery

    Semantic Mas

    30 EKİM 2013
  • TomOdellVEVO

    TomOdellVEVO

    29 Mayıs 2012