2010-05-24 18 views
5

Yanlışlıkla ASP.NET 4.0'da yeni bir özellik hakkında this post bulundu: <%: Content %> bu yeni parantez içine alınmış ifadeler HTML kodlanmış olarak oluşturulmalıdır.<%: %> HTML kodlaması için parantez

<asp:Label ID="MyLabel" runat="server" Text='<%: Eval("MyTextProperty") %>' /> 

Ama çalışmıyor:

ben şöyle bir FormView içinde bir veri sınırlama etiket içindeki bu denedim metin özelliği (test için) komut dosyası etiketlerini içerir, ancak çıkış boştur. Geleneksel yol kullanımı:

<asp:Label ID="MyLabel" runat="server" 
    Text='<%# HttpUtility.HtmlEncode(Eval("MyTextProperty")) %>' /> 

Neyi yanlış yapıyorum?

(Üzerinde bir sidenote: Herhangi bir bilgiyi bulmak için çok aptalım: Google bu şeyi aramayı reddediyor. MSDN'deki VS2010 Çevrimiçi yardımı, çok sayıda isabet sunuyor, ancak aramamla ilgili hiçbir şey yok. Bu "şeylerin" (ne demek istediğim parantezleri) daha iyi bir arama terimi için resmen çağrıldıklarını bilmiyorum.)

Herhangi bir bilgi ve ek linkler ve kaynaklar hoş geldiniz!

Şimdiden teşekkürler!

+0

Tutarlılık kontrolü 1: oluşturulan sayfanın bir "görünümü kaynak" yaptığınızda, <%: %> biçimlendirme olduğunu görüyoruz? (yapmamalısın) Sanity check 2: siteniz gerçekten asp.net 4.0 kullanıyor mu? Bu özellik 2.0'da çalışmıyor. –

+0

"Evet" ve "Evet". Bence Oded haklı: FormView'ın dışındaki parantezleri kullanıyorum ve Eval olmadan çalışır. – Slauma

cevap

8

Sen sözdizimi <%#%> ve Eval ile kullanılamaz tepki çıkışı etiketleri (<%=%> ve <%:%>) ile Eval (ve Bind) kullanılır data binding expressions, kafa karıştırıcıdır.

+1

Teşekkürler, konu bu. Yani: HttpUtility.HtmlEncode'a dön ... iç ... – Slauma

3

<%#: %> HTML kodlama veri bağlama sözdizimini kullanın. ('#' Öğesinden sonra ':' dikkat edin. Örneğin:

Text='<%#: Eval("PropertyToEval") %>' 
İlgili konular